Pull to refresh
  • by relevance
  • by date
  • by rating

Запили Sign in with Apple, или 30 апреля (точнее июня) твоё приложение превратится в тыкву

Alconost corporate blog Development for iOS *Development of mobile applications *Interfaces *Mobile applications design *

Часть 2


Компания Apple опубликовала следующую новость 4 марта 2020 г.: “Все новые приложения и апдейты должны соответствовать новым гайдлайнам ревью и интерфейса к 30 апреля (перенесено на июнь) 2020.”


И главным новшеством этих гайдлайнов является обязательное наличие рабочей кнопки “Sign in with Apple” (SIWA) для приложений, позволяющих логиниться через сторонние сервисы (Facebook, Google, Twitter и т.д.).



Казалось бы, всё просто, но есть нюансы →

Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Views 7.9K
Comments 11

Жизненный цикл UIViewController'a

Development for iOS *
Большинство прикладных приложения под iOS таким или иным образом используют UIViewController'ы. Там где UIKit фрэймворк — там и UIViewController'ы. Их много, они повсюду, они сидят в засадах и выглядывают из-за каждого угла. Поэтому, любой программист под iOS — будь он зеленым новичком, едва ступившим на тропу программирования, либо матерым профессионалом своего дела, должны знать о UIViewController'aх все.

Причиной написания данной поста является то, что, как оказалось, можно преспокойно программировать под iOS полгода, и не знать полностью о жизненном цикле UIViewcontroller'ов. И на небольших проектах это даже получается. Однако, когда приходится иметь дело с серьезным, достаточно большим проектом, то появляются определенные проблемы с нехваткой памяти, «неправильной» и «непонятной» работой контроллеров, пропажей данных, и еще со многими типичными проблемами, о которых будет написано ниже.

Так вот. В данном посте, я еще раз расскажу о жизненном цикле UIViewController'ов, расскажу о том, что и где стоит делать, и в каком случае. Пост ориентирован на разработчиков разных уровней, так что кто-то узнает для себя что-то новое, а кто-то найдет повод отпинать моменты, на которые стоит обратить внимание Junior'ов в команде.

Всех заинтересовавшихся, прошу
под кат
Total votes 70: ↑64 and ↓6 +58
Views 129K
Comments 43

Разбираем iPhone Core Data Recipes. Часть 1

Development for iOS *
Sandbox

Introduction


Цель данной статьи — помочь начинающему iOS разработчику, понять, как правильно работать с SQLite базой данных используя Core Data на примере iPhone Core Data Recipes. В первой части из серии статей, будет рассмотрено взаимодействие приложения и базы данных, а также работа со связанными записями (Relationships).

Prerequisites


Для самостоятельного изучения исходных текстов данного приложения, вам необходим стандартный набор инструментов:
  • Mac OS X
  • Xcode


Данный набор позволит вам просмотреть, изменить и запустить приложение на симуляторе. В случае же, если вы захотите попробовать запустить его на настоящем iPhone, требуется участие в iOS Developer Program.

А также, что немало важно, нужно базовое понимание структуры языка Objective-C и приложения.

Ссылки на используемые материалы и инструменты предоставлены в разделе References.

Что такое iPhone Core Data Recipes?

Xcode проект от разработчиков из Apple, который дает общее представление о том, как использовать view controllers, table views и Core Data в iPhone приложениях. Конечно, данный проект также актуален для iPad, но в него необходимо внести интерфейсные изменения, для корректного отображения на iPad.

iPhone Core Data Recipes Screenshots

Скриншоты ниже, дают общее представление о интерфейсе приложения. В главном окне «Recipes» — оторбаражается список готовых продуктов. Нажав на один из них, приложение отображает информацию о том, как приготовить данный продукт, его категорию, сколько на это нужно времени, какие и в каком количестве необходимы ингредиенты, а также кнопку которая отображает текстовую инструкцию по приготовлению (скриншот не приведен). Также в приложении есть возмоность конвертации значений между граммами, фунтами и унциями, а также таблица соответствия температур (по цельсию и фаренгейту).
Читать дальше →
Total votes 25: ↑20 and ↓5 +15
Views 34K
Comments 15

Разбираем iPhone Core Data Recipes. Часть 2

Development for iOS *

Introduction


Данная статья, вторая и заключительная статья из серии «Разбираем iPhone Core Data Recipes». Первую часть статьи, вы можете прочитать тут. Цель серии статей — помочь начинающему iOS разработчику, понять, как правильно работать с SQLite базой данных используя Core Data на примере iPhone Core Data Recipes. В заключительной статье мы рассмотрим функционал добавления, редактирования и удаления записей из базы данных.

Prerequisites


Для самостоятельного изучения исходных текстов данного приложения, вам необходим стандартный набор инструментов:
  • Mac OS X
  • Xcode

Данный набор позволит вам просмотреть, изменить и запустить приложение на симуляторе. В случае же, если вы захотите попробовать запустить его на настоящем iPhone, требуется участие в iOS Developer Program.

А также, что немало важно, нужно базовое понимание структуры языка Objective-C и приложения.

Ссылки на используемые материалы и инструменты предоставлены в разделе References.
Читать дальше →
Total votes 13: ↑9 and ↓4 +5
Views 8.4K
Comments 2

Оптимизация выражения LIKE при использовании Sqlite в iOS приложении

Development for iOS *SQL *SQLite *
Недавно я столкнулся с задачей оптимизации запроса к Sqlite в моем iOS приложении.
Задача заключалась в следующем. Имелся список документов (PDF файлов), словарь (список слов), ну и связь документов и слов из словаря (вхождение слов в документ). Необходимо было реализовать поиск и вывести список документов в которых есть введенное слово.

Структура базы имела следующий вид:
Читать дальше →
Total votes 20: ↑16 and ↓4 +12
Views 8.9K
Comments 7

Кроссплатформенная разработка для мобильных с Xamarin

Programming *Development of mobile applications *Xamarin *

Введение


Совсем недавно компания Xamarin анонсировала выход новой версии своего инструментария для кроссплатформенной разработки мобильных приложений, но вменяемых статей на русском по этой тематике так и нет. На Хабре появился небольшой обзор, не связанный с кодингом, там же была пара попыток рассказать об этом чуть подробнее, но дальше процесса создания Hello World приложения дело не зашло. А жаль. В этот раз мы попробуем исправить это досадное недоразумение.
Читать дальше →
Total votes 46: ↑38 and ↓8 +30
Views 59K
Comments 29

Преодолеваем скрытые опасности KVO в Objective C

True Engineering corporate blog Development for iOS *Objective C *
The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that when a thing that cannot possibly go wrong goes wrong it usually turns out to be impossible to get at or repair.
— Douglas Adams


Objective C существует уже с 1983 года и является ровесником C++. Однако, в отличие от последнего он начал приобретать популярность только в 2008 году, после выхода iOS 2.0 — новой версии операционной системы для революционного iPhone, включавшей приложение AppStore, позволяющее пользователям приобретать приложения, создаваемые сторонними разработчиками.
Дальнейший успех Objective C обеспечивался не только популярность устройств на базе iOS и относительной легкостью продаж через AppStore, но и значительными усилиями компании Apple по совершенствованию как стандартных библиотек, так и самого языка.
Согласно рейтингу TIOBE к началу 2013 года Objective C обогнал по популярности C++ и занял третье место, уступая только C и Java.

На сегодняшний день Objective C включает и такие относительно старые функции как KVC и KVO, существовавшие еще за 4 года до выхода первого iPhone, и такие новые возможности как блоки (blocks, появившиеся в Mac OS 10.6 и iOS 4) и автоматический подсчет ссылок (ARC, доступный в Mac OS 10.7 и iOS 5), которые позволяют с легкостью решать задачи, вызывавшие серьезные трудности ранее.

KVO — это технология, позволяющая незамедлительно реагировать в одном объекте (наблюдателе) на изменения состояния другого объекта (наблюдаемого), без внесения знаний о типе наблюдателя в реализации наблюдаемого объекта. В Objective C, наряду с KVO, существует несколько способов решения этой задачи:

Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Views 25K
Comments 6

Многозадачность в iOS 7

Development for iOS *Objective C *
Translation
Tutorial
До IOS 7, разработчики были довольно ограничены в том, что они могут сделать, когда их приложения оставались в фоновом режиме. Помимо VOIP и геолокационных функций, единственный способ для выполнения кода в фоновом режиме было использование фоновых задач, ограниченных к управлению в течении нескольких минут. Если вы хотели загрузить большое видео для просмотра в офф-лайн режиме, или сохранять фотографии пользователя на сервер, вы могли бы выполнить только часть работы.

IOS 7 добавляет два новых API-интерфейса для обновления пользовательского интерфейса вашего приложения и контента в фоновом режиме. Первый, Background Fetch (доставка в фоне или обновление фона), позволяет получать новый контент из сети через регулярные промежутки времени. Второй, Дистанционные Уведомления (Remote Notifications), это новая функция использует Push-уведомления, чтобы уведомить, когда произошло событие. Оба этих новых механизма помогают Вам сохранить интерфейс вашего приложения в актуальном состоянии, и могут планировать работу над новой Фоновой службой передачи, что позволяет выполнять вне — процесса передачи данных по сети (загрузка и передача).

Background Fetch и Удаленные Уведомления простые зацепки приложений каждые 30 секунд времени для выполнение работы пока Ваше приложение не приостановится. Они не предназначены для процессорной интенсивной работы или длительных задач, скорее, они для очередного давно запущенного запроса сети, как скачивание большого фильма или выполнения быстрых обновлений содержимого.

С точки зрения пользователя, единственное очевидное изменение в многозадачности является новый переключатель приложений, который отображает снимок каждого приложения каким оно было, когда его оставили в фоновом режиме. Но есть причина для отображения снимков — теперь вы можете обновить снимок вашего приложения после завершения работы, показывая предварительный просмотр нового содержания. Социальные сети, новости, или погодные приложения теперь могут отображать обновленное содержимое, позволяя пользователю не открывать приложения. Мы увидим, как обновить снимок позже.

Читать дальше →
Total votes 36: ↑10 and ↓26 -16
Views 16K
Comments 10

Multiple Delegate

e-Legion corporate blog Development for iOS *Cocoa *
В Cocoa очень популярен паттерн делегирование. Стандартный способ реализации этого паттерна — добавление к делегатору weak свойства, которое хранит ссылку на делегат.

У делегирования много различных применений. Например, реализация какого-то поведения в другом классе без наследования. Еще делегирование используется как способ передачи уведомлений. Например, UITextField вызывает у делегата метод textFieldDidEndEditing:, который информирует его о том, что редактирование закончено, и т.д.

А теперь представьте задачу: надо сделать так, чтобы делегатор посылал сообщения не одному делегату, а нескольким, причем делегирование реализовано стандартным методом через свойство.
Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Views 9.6K
Comments 6

Добавляем панель бокового меню в свое iOS-приложение

Development for iOS *Objective C *Xcode *
Translation
Tutorial
Как переводчик заранее прошу извинения за возможные ошибки в переводе. Буду признателен сообщениям об ошибках для их скорейшего исправления.

Как я могу добавить панель бокового меню в свое iOS-приложение? Это один из самых часто задаваемых вопросов которые мы получаем от своих читателей. Сегодня мы покажем как создать боковое меню вроде того, которое вы можете наблюдать, например, в приложении от Facebook.

Для тех кто не знаком с понятием бокового меню в мобильных приложениях, Кен Ярмост (Ken Yarmost) дал хорошее объяснение этому элементу интерфейса и определил его как:
Боковое меню представляет собой панель, которая «выезжает» снизу, слева или справа от области основного контента приложения, содержащая вертикальную, независимую от основного контента приложения прокрутку, и служит основным инструментом навигации в приложении.

С того момента как Facebook представил боковое меню в своем мобильном приложении, этот элемент интерфейса быстро стал стандартом реализации навигации по приложению. В том или ином виде вы можете видеть боковое меню в таких популярных приложениях как Path, Mailbox, Gmail, Evernote и т.д.



Использование бокового меню, позволяет реализовать навигацию не отнимая драгоценного места у основного контента на экране мобильного устройства, потому что в неактивном состоянии такое меню скрывается за слоем основного контента приложения. Меню может быть вызвано путем нажатия кнопки меню на навигационной панели. После того как меню стало активным, пользователь может закрыть его, используя ту же кнопку меню на панели навигации или просто свайпом влево по области активного контента приложения.
Читать дальше →
Total votes 15: ↑12 and ↓3 +9
Views 41K
Comments 28

Как сделать ячейку таблицы сдвигаемой для отображения дополнительных опций в приложениях iOS

Development for iOS *Objective C *Xcode *
Translation
Tutorial
Как переводчик заранее прошу извинения за возможные ошибки в переводе. Буду признателен сообщениям об ошибках для их скорейшего исправления.

Когда iOS 7 была впервые анонсирована, одним из многих визуальных нововведений, которое особенно заинтересовало меня, был жест swipe-to-delete (смахни чтобы удалить) в приложении Mail. Вы уже давно прекрасно знакомы с этой функцией приложения. После того как проводите по ячейке таблицы, вы видите кнопки корзины, дополнительных опций («Ещё») и пометки письма флагом. При нажатии на кнопку «Ещё» становится активной панель выбора действия, на которой вы можете выбрать одну из опций действия с письмом — Ответить, Пометить флагом и т.д.

Думаю, что это отличный инструмент для манипулирования записями таблицы. Однако, как вы прекрасно знаете что Apple не предоставляет этой возможности для разработчиков в iOS 7. Вы можете только добавить жест для функции удаления записи из таблицы. Остальные опции работы с записью таблицы ограничены стандартным приложением Mail. Понятия не имею почему Apple ограничивает использование такого прекрасного инструмента только своими приложениями. К счастью, некоторые разработчики создали решения (такие как UITableView-Swipe-for-Options, MCSwipeTableViewCell) и сделали их абсолютно бесплатными.

В этом уроке я буду использовать библиотеку SWTableViewCell. Посмотрим, как она поможет нам реализовать функцию swipe-to-show-options (смахни чтобы увидеть опции) в вашем приложении. SWTableViewCell достаточно проста в использовании и если вы понимаете как работает UITableView, у вас не должно возникнуть проблем с SWTableViewCell. Кроме того, этот компонент поддерживает отображение кнопок опций при свайпе в обе стороны. Вы быстро поймете что это значит.

Итак, давайте приступим и создадим наше демонстрационное приложение.
Читать дальше →
Total votes 8: ↑6 and ↓2 +4
Views 8.3K
Comments 1

Адаптивные Split View Controller и Popover в iOS 9 (Swift). Часть 1

Programming *Development for iOS *Development of mobile applications *Swift *
Tutorial


С незапамятных времен Split View Controller и Popover в iOS были доступны только на iPad.
Начиная с iOS 8, они теперь работают и на iPad, и на iPhone, благодаря концепции Size Classes и их адаптивному поведению. Однако автоматическая адаптация, предложенная Apple «из коробки», чаще всего нас не устраивает и приходится писать небольшой дополнительный код, используя методы делегатов UISplitViewControllerDelegate и UIPopoverPresentationControllerDelegate. В данной статье мы будем исследовать адаптивные способности Split View Controller и Popover на примере очень простых практических приложений, работающих с сервером Flickr.com, представляющим собой облачный сервис для хранения фотографий. Сама по себе эта задача имеет большой практический смысл, так как является часто встречающимся случаем, когда данные считываются с некоторого сервера и представляются затем ввиде связанных таблиц и изображений. Попутно мы будем демонстрировать “вживую” такие синтаксические конструкции Swift, как вычисляемые свойства c {get} и {set}, наблюдатели свойств didSet{}, функции высшего порядка map, flatMap, filter, вывод типа из контекста и перегрузку (overload) функций, совместное использование Swift и Objective-C кода, работу со структурами struct, использование хранилища NSUserDefaults и т.д. Но все же в этой статье акцент делается на более сложных конфигурациях адаптивных Split View Controller и Popover.
Впоследствие все приведенные в этой статье приложения вы сможете использовать в качестве шаблонов для разработки ваших приложений с похожими задачами.
Читать дальше →
Total votes 5: ↑4 and ↓1 +3
Views 16K
Comments 1

Адаптивные Split View Controller и Popover в iOS 9 (Swift). Часть 2

Programming *Development for iOS *Development of mobile applications *Swift *
Tutorial


Это вторая часть обучающей статьи, связанной с изучением адаптивного поведения Split View Controller и Popover в iOS 9 на iPad и на iPhone, которое стало возможным благодаря концепции Size Classes. Обучение состоит в создания на Swift практических приложений, работающих с сервером Flickr.com, который является облачным сервисом для хранения фотографий.

В первой части перечислены пять интересных с точки зрения разработчика случаев применения адаптивного Split View Controller и Popover, которые отличаются сложностью Master. Detail везде один и тот же — единственный Image View Controller, вставленный в Navigation Controller и призванный показывать изображение фотографии:

1. Классический вариант: один элемент в Master, вставленный в Navigation Controller, (часто это Table View Controller)

2. Множество Table View Controller элементов, вставленных в Navigation Controller

3. Tab Bar Controller в качестве Master

4. Случай разных UI и разных пользовательских классов для приборов с разными Size Classes здесь не рассматривается, но идею можно посмотреть в “Адаптивный интерфейс с двумя storyboards для iOS 9”.

5. Адаптивный Popover

В первой части осуществлялось построение базового экспериментального приложения на Swift, которое было распространено на случаи 1-2. В этой статье мы будем дальше усложнять наше экспериментальное приложение и распространим его на случаи 3 и 5. Код для всех вариантов можно найти на Github.
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views 11K
Comments 0

Сертификация в Apple Developer Center простым и понятным языком

Development for iOS *Objective C *Xcode *
Sandbox

Кратко о главном


В Apple Developer Center с незапамятных времен применяется довольно мудреная система сертификации ваших приложений на каждом из ключевых этапов — разработка, тестирование и публикация.

Зачастую при первом погружении в эту систему у начинающих (и не только) разработчиков возникают серьезные проблемы с пониманием того, как функционирует Apple Developer Center (будем называть его «девцентр» для простоты). В результате, мне в процессе профессиональной деятельности не раз приходилось наблюдать на новых местах работы огромные свалки из профилей и сертификатов в девцентре, в результате чего приходилось приступать к «разбору завалов».

При этом, в сети довольно не такой большой выбор материалов на эту тему. Конечно, в официальной документации Apple все хорошо структурировано и очень подробно описано, но зачастую просто не хватает времени на изучение такого количества материала. Как правило, хочется быстро понять, что именно и в каком порядке нужно сделать для корректной работы приложения на этапах разработки, тестирования и при публикации его в магазин App Store. В русском же сообществе подобных материалов, собранных в одном месте и в удобном доступе, я не видел вовсе, поэтому и решил написать эту статью. Для всех интересующихся — добро пожаловать под кат.
Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Views 108K
Comments 17

Мобильное приложение против мошенников и бумажной волокиты в автостраховании

True Engineering corporate blog Development for iOS *Development of mobile applications *Objective C *
Сегодня хотим поделиться нашим опытом в разборе автомобилей. Нет, мы не планируем устраивать выпуск Top Gear. У нас для вас другая тема – как с помощью мобильного приложения перевести в цифровой формат бумажную волокиту вокруг добровольного автострахования – всем известного КАСКО.

Тема будет интересна в первую очередь тем, кто занимается разработкой мобильных бизнес-приложений и автоматизацией бизнес-процессов. Интересные технические моменты будем рассказывать на примере разработки под iOS.

Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Views 8.3K
Comments 5

Perfect — REST сервер на Swift

Development for iOS *Swift *
Tutorial
image
Большинству iOS разработчиков рано или поздно становится тесно в мире iOS SDK. И причина, отнюдь, не в том, что у IOS недостаточно возможностей для серьезной разработки, а в том, что большинство современных серьезных приложений имеет клиент -серверную архитектуру, но разработчикам iOS оказывается доступен только Клиентский мир. Серверная разработка отдана на откуп серверным оленям программистам, которые, весьма ревностно относятся к требованиям мобильных разработчиков что-то изменить в API. Не добавляет оптимизма тот факт, что для реализации простейшего API приходится изучать другой язык программирования, со своими парадигмами и нюансами. Даже для того чтоб обкатать какую-нибудь пилотную идею приходится либо привлекать людей со стороны, либо погружаться в мир чужеродных грез (PHP, Pyton, Ruby, C#). Все ли так плохо в стане Objectove-C / Swift? Оказалось, что совсем нет. Немного погуглив на предмет серверной разработки я наткнулся на довольно любопытное начинание, претендующее на то, чтоб стать реальным кросс-платформенным решением — т. е. работающим одинаково хорошо как в среде OSX, так и *nix систем (про Windows не говорю, там С# вряд ли кто подвинет — слишком много вкусностей).

Perfect — как заявляют создатели проекта — Идеальный веб-сервер и инструментарий для разработчиков, использующих Swift язык программирования для создания приложений и других служб REST. Понятно, что «Идеальный» — это не более чем игра слов, но вместе с тем, после знакомства с предлагаемым решеним начинаешь склоняться к тому, что толика правды в этом утверждении есть.

В «прессе» пробегали статьи о том, что на подходе новый язык программирования, который может стать промышленным стандартом с легкой подачи Apple. Язык, который базируется на продвигаемом в массы Swift. Как правило, статьи об этом вызывали больше вопросов, и еще больше раздражения у тех, кому надоело все переучивать (Swift сам по себе довольно быстро меняется). Однако, углубившись в изучение вопроса, становится понятным, что все намного лучше чем, кажется.

Perfect — это не новый язык, серверной разработки. Perfect это серверное окружение, которое позволяет создавать REST API сервисы используя исключительно Swift последней реализации (на момент написания статьи Swift 2.2) Там нет ничего, выходящего за рамки того, что приходится делать ежедневно клиентским разработчикам.
Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Views 33K
Comments 24

Автодокументирование Perfect сервера

Development for iOS *Swift *
Tutorial
image
В прошлый раз мы говорили, что Perfect не имеет автодокументирование реализуемого API из коробки. Возможно, что в следующей реализации разработчики пофиксят это досадное упущение. Но ничего не мешает нам позаботится об этом самостоятельно. Благо, необходимо добавить совсем не много кода.
Читать дальше →
Total votes 8: ↑7 and ↓1 +6
Views 4.2K
Comments 0

IT-meetup Superjob «iOS — архитектура дизайна, кода, деплоя»

SuperJob corporate blog Development for iOS *Development of mobile applications *

26 января приглашаем iOS-разработчиков на встречу «iOS — архитектура дизайна, кода, деплоя» в новый офис Superjob на Малой Дмитровке. Приходите обмениваться опытом!


Superjob продолжает серию IT-митапов. В этом году мы сделаем акцент на мобильной разработке и Data Science.image


Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Views 2.8K
Comments 0

IT-meetup Superjob «iOS — архитектура дизайна, кода, деплоя». Прямая трансляция в Facebook

SuperJob corporate blog Development for iOS *Development of mobile applications *
Специально для тех, кто не успел зарегистрироваться на митап Superjob «iOS — архитектура дизайна, кода, деплоя», мы организуем прямую трансляцию события на нашей странице в Facebook.

Через полчаса, в 19:00 по московскому времени, мы начнем рассказ о кейсах в онлайн режиме.

image
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Views 1.8K
Comments 3

IT-meetup Superjob «iOS — архитектура дизайна, кода, деплоя» (отчет, презентации, видео)

SuperJob corporate blog Development for iOS *Development of mobile applications *
Видео, доклады и краткий отчет для тех, кто не доехал.

В новом офисе Superjob на Малой Дмитровке состоялся первый в 2017 году митап по мобильной iOS-разработке. Приложение Superjob для поиска работы стабильно «проживает» в топе AppStore, а счет установок давно идет на миллионы. Мы первыми запустили приложение для корпоративных пользователей, и сегодня тысячи работодателей уже даже и не обращаются к веб-версии. Так что опыт у нашей команды действительно уникальный. Таким обычно службы безопасности делиться не разрешают. Но у нас СБ нет — запретить вечеринку было некому.

Total votes 19: ↑19 and ↓0 +19
Views 6.2K
Comments 6