Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. iOS SDK

Как использовать CloudKit от Apple для Push-уведомлений

by
Difficulty:BeginnerLength:MediumLanguages:

Russian (Pусский) translation by Ellen Nelson (you can also view the original English article)

Вступление

Apple представила свой фреймворк CloudKit наряду с iOS 8 в 2014 году. Хотя её основной целью было работать в качестве онлайн-базы для iOS приложений, CloudKit также предлагает множество других функций, включая push-уведомления.

В этом руководстве я покажу вам, как использовать инфраструктуру CloudKit для реализации push-уведомлений в iOS приложениях. Если вы хотите узнать больше о других возможностях CloudKit, вы можете прочитать мое руководство, посвященное основам фреймворка:

  • Введение в CloudKit

Это руководство требует, чтобы вы использовали по крайней мере Xcode 8 со Swift 3. Вам также потребуется физическое устройство с iOS для тестирования и учетная запись разработчика Apple, чтобы вы могли использовать CloudKit для своего приложения.

1. Зачем использовать CloudKit?

Во-первых, мы рассмотрим преимущества (и недостатки) использования CloudKit для push-уведомлений в вашем приложении.

Как вы увидите в этом руководстве, чтобы настроить push-уведомления с помощью CloudKit, вам не нужно беспокоиться о создании сертификатов и предоставлении профилей, как это делается с другими облачными сервисами. Поскольку всё сделано в Apple, то всё, что вам нужно сделать, это включить CloudKit для вашего приложения, а всё остальное просто работают.

Одна из лучших особенностей CloudKit для некоторых разработчиков — это то, сколько вы получаете бесплатно. Существуют многие другие компании Backend-as-a-Service (BaaS) и предлагают push-уведомления для приложений iOS, но большинство из них имеют ограничения на количество уведомлений, которые могут быть отправлены бесплатно. В CloudKit нет ограничений на число push-уведомлений, которые вы можете отправлять своим пользователям. Однако бесплатный уровень CloudKit ограничивает хранение данных, передачу данных и количество запросов пользователей в секунду.

Еще одно преимущество использования CloudKit в ваших приложениях заключается в том, что, предоставляемые Apple, стабильность и обслуживание сети будут чем-то, о чем вам никогда не придется беспокоиться. Перебои в работе Apple происходят очень редко и фиксируются оперативно. Это означает, что вы можете полагаться на CloudKit, что он всегда работать должным образом для ваших пользователей.

Однако, недостаток, который вам следует знать при использовании CloudKit, заключается в том, что он не доступен на других платформах, отличных от Apple. Это означает, что если вы хотите создать Android-версию своего приложения, CloudKit не будет работать. Для кросс-платформенного решения я бы рекомендовал еще один BaaS, такой как back4app (построенный на Parse), его я обсуждаю в этом руководстве:

2. Настройка CloudKit

Для начала создайте новый проект в Xcode из шаблона iOS > Application > Single View Application.

Как только Xcode создаст ваш проект, перейдите в Project navigator и нажмите вкладку Capabilities. На этом экране щелкните переключатель, чтобы включить iCloud, а затем установите флажок CloudKit:

Enabling iCloud and CloudKit

После включения CloudKit вы можете перейти в панель управления CloudKit для вашего приложения.

Чтобы отправлять push-уведомления пользователям нашего приложения, мы создадим тип записи  GlobalNotification, который будет уведомлять всех пользователей, когда будет создана новая запись этого типа. Если раздел Record Type панели управления CloudKit еще не открыт для вас после входа в систему, нажмите на него в боковой панели.

Чтобы создать новый тип записи, нажмите кнопку + в верхней части экрана. Заполните меню, как показано на следующем снимке экрана:

GlobalNotification Record Type

В этом уроке мы добавляем только одно поле content к типу записи, но для ваших собственных приложений вы можете добавить столько, сколько вам нужно.

Когда всё будет готово, нажмите кнопку Save в нижнем правом углу.

3. Настройка приложения

Вернувшись в Xcode, откройте свой файл AppDelegate.swift и добавьте следующие операторы импорта сверху кода:

Этот код просто импортирует фреймворки CloudKit и UserNotifications. Мы собираемся использовать UserNotifications для управления разрешениями на уведомления и входящими уведомлениями. Если вы хотите узнать больше об этом фреймворке, вы можете прочитать мой урок, где я рассказываю о нём здесь:

Далее, отредактируйте определение вашего класса AppDelegate, чтобы оно согласовывалось с протоколом UNUserNotificationCenterDelegate:

Теперь нам нужно запросить разрешения на показ уведомлений. Чтобы это сделать, замените ваш метод application(_:didFinishLaunchingWithOptions:) на следующее:

Этим кодом, мы запрашиваем у пользователя разрешение на показ уведомлений, и если они разрешают, регистрируем приложение для push-уведомлений.

Теперь, нам нужно реализовать метод application(_:didRegisterForRemoteNotificationsWithDeviceToken:). Добавьте следующий код в ваш класс AppDelegate:

С помощью этого кода, мы с начала создадим объект CKQuerySubscription. Этот объект подписки сообщает CloudKit какие уведомления он должен отправлять. При инициализации этой подписки, мы добавляем следующее:

  • Название типа записи для мониторинга.
  • Predicate, который можно использовать для ограничения подписки на определенные записи указанного типа. В этом уроке мы хотим подписаться на все записи GlobalNotification, поэтому мы передаем predicate, который всегда true.
  • Один или несколько триггеров, указывающих CloudKit, когда нужно отправлять уведомления. В этом примере, нам нужно только уведомление о создании новой записи. Другие допустимые триггеры — когда запись обновляется или удаляется.

Затем мы создаем объект CKNotificationInfo, предоставляем ему некоторый контент и затем назначаем его на объекте подписки. Объект CKNotificationInfo — это способ форматирования push-уведомления, которое доставляется вашим пользователям. В этом примере мы настраиваем его со следующими свойствами:

  • alertBody = "A new notification has been posted!"
  • Значение shouldBadge = true. Это будет увеличивать циферку пришедших уведомлений на иконке приложения на домешнем экране.
  • soundName = "default". С этим, для уведомления вашем приложении, будет использоваться стандартный звук iOS для уведомлений. Если вы хотите использовать свой звук, тогда вам нужно указать название звукового файла.
  • desiredKeys это массив с единственным значением. Для каждого ключа, который вы добавляете в этот массив, CloudKit будет подгружать соответствующее значение из записи, которая вызвала уведомление и включит его в информацию словаря уведомлений пользователя.

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

Вот так, вы сможете видеть уведомление, пока ваша приложение запущено, добавьте следующие метод в ваш класс AppDelegate:

Этот код использует фреймворк UserNotifications для показа ваших уведомлений так, будто ваше приложение не запускалось вовсе.

Прежде чем запустить ваши приложения, вам нужно убедиться, что устройство, на котором вы его тестируется подключено к аккаунту iCloud через Settings. Если это не так, вам понадобится это сделать, так как CloudKit APIs требует, чтобы текущий пользователь был залогинен.

Соберите и запустите ваше предложение из Xcode, примите запрос вашего предложения на показ уведомлений. Как только вы это сделали, вернитесь к панели управления вашим приложением в CloudKit и нажмите на Subscription Types на левой панели. Вы должны увидеть новую подписку для записей GlobalNotification с триггером INSERT:

Subscription Type

4. Отправка уведомлений

Ну вот, всё что нам осталось сделать это отправить уведомление! Всё ещё в панели управления CloudKit, нажмите на Default Zone под Public Data на левой панели. Нажмите либо на кнопку + или на New Record, чтобы создать новую запись GlobalNotification. Заполните содержимое (content) чем хотите и нажмите кнопку Save в правом нижнем углу.

Сразу после сохранения вашей записи, на вашем тестовом устройстве вы должны увидеть уведомление:

Notification

Заключение

Как вы видели, вы можете с легкостью добавить push-уведомления в ваше iOS приложение с помощью CloudKit. Настройка очень простая, всего в несколько шагов, и предоставленные APIs позволяют использовать любые push-уведомления для вашего предложения.

Как всегда, пожалуйста, оставьте комментарий или отзыв в разделе комментариев ниже. И посмотрите другие наши курсы и руководства по iOS!

  • Что нового в iOS 10

  • IOS 10: Расширения службы уведомлений

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.