Статьи

Легкие iOS Push-уведомления с back4app

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

Это руководство требует, чтобы вы работали как минимум с Xcode 8 с iOS 10 SDK. Это потому, что мы будем использовать новую платформу UserNotifications для обработки получения уведомлений в приложении. Если вы хотите узнать больше об этой платформе, вы можете проверить мой учебник, освещающий ее здесь:

  • Введение в среду пользовательских уведомлений

Вам также понадобится физическое устройство iOS для запуска вашего приложения. Это связано с тем, что симулятор iOS не поддерживает push-уведомления.

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

Шаблон приложения

На следующем экране, как только вы заполните всю информацию (вы можете использовать ту же информацию, что и я), убедитесь, что вы приняли к сведению Идентификатор пакета, поскольку нам это понадобится позже:

Информация о приложении и идентификатор пакета

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

1
import UserNotifications

Затем замените application(_:didFinishLaunchingWithOptions:) метод application(_:didFinishLaunchingWithOptions:) следующим:

01
02
03
04
05
06
07
08
09
10
11
12
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
     
    let center = UNUserNotificationCenter.current()
    let options: UNAuthorizationOptions = [.alert, .badge, .sound]
    center.requestAuthorization(options: options, completionHandler: { authorized, error in
        if authorized {
            application.registerForRemoteNotifications()
        }
    })
     
    return true
}

С помощью этого кода мы запрашиваем у пользователя разрешение на отображение уведомлений с использованием инфраструктуры UserNotifications. Если пользователь принимает это, мы регистрируем удаленные (push) уведомления, вызывая метод registerForRemoteNotifications .

Для последнего шага настройки приложения нажмите на название своего проекта в верхней части File Navigator Xcode и затем перейдите на вкладку Capabilities . На этом экране включите переключатель Push-уведомлений, чтобы добавить соответствующие права в ваше приложение:

Push-уведомления

На базовом уровне система push-уведомлений для iOS работает через следующие шаги:

  • Сторонний сервер отправляет полезные данные уведомлений в службу Apple Push Notification (APN).
  • APN проверяет полезную нагрузку, чтобы убедиться, что она поступает из законного источника.
  • Если они действительны, APN затем перенаправляют полезную нагрузку на правильное устройство iOS.

Для правильной аутентификации полезных данных уведомлений необходимо создать сертификат подписи . Чтобы начать процесс создания этого сертификата, вам необходимо войти в систему с помощью своего Apple ID на веб-сайте Apple для разработчиков .

После того, как вы вошли в систему, нажмите « Сертификаты, идентификаторы и профили» на левой боковой панели:

Боковая панель портала разработчика

На следующем экране выберите « Идентификаторы»> «Идентификаторы приложений» на левой боковой панели, а затем нажмите кнопку «плюс» в верхнем правом углу:

Добавить новый идентификатор приложения iOS

При создании идентификатора приложения вы можете ввести любое имя для своего имени в разделе « Описание идентификатора приложения ». В разделе Суффикс идентификатора приложения выберите опцию « Явный идентификатор приложения» и введите идентификатор пакета, который вы указали при создании проекта, в поле « Идентификатор пакета» . Наконец, в разделе « Службы приложений » обязательно установите флажок, чтобы включить Push-уведомления . После ввода всей информации прокрутите вниз до нижней части страницы и нажмите кнопку « Продолжить» .

Теперь вам будет представлен обзор вашего нового идентификатора приложения, как показано на скриншоте ниже:

Обзор идентификатора приложения

Убедитесь, что вся информация верна (на этом этапе Push-уведомления должны отображаться как настраиваемые ), а затем нажмите « Зарегистрировать» в нижней части экрана.

Перейдите в раздел «Сертификаты» на левой боковой панели и снова нажмите кнопку «плюс» в правом верхнем углу. На следующем экране в разделе « Разработка » выберите параметр « Служба Apple Push Notification SSL (песочница)» и нажмите « Продолжить» внизу.

На следующем экране выберите идентификатор приложения в раскрывающемся меню и нажмите « Продолжить» .

Если у вас еще нет файла запроса на подпись сертификата (CSR), следуйте инструкциям на следующем экране, чтобы создать его. Как только у вас будет готов CSR, вы можете перейти к следующему экрану и загрузить его.

После создания сертификата нажмите кнопку « Загрузить» и откройте файл с помощью приложения Keychain Access на своем компьютере. Если вас спросят, к какой цепочке ключей добавить сертификат, выберите опцию входа .

В приложении « Связка ключей» выберите опция Сертификаты в нижней части левой боковой панели:

Брелок для доступа к боковой панели

Теперь вам нужно найти сертификат, который вы только что сделали; он будет называться Apple Development IOS Push Services: {Bundle ID} . Найдя свой сертификат, щелкните правой кнопкой мыши этот ключ и выберите опцию « Экспорт» . В появившемся всплывающем окне вы можете вызывать файл как хотите, но убедитесь, что для параметра «Формат файла» задано значение « Обмен личной информацией» (.p12) :

Параметры экспорта сертификатов

При экспорте сертификата не указывайте пароль для файла p12. Это связано с тем, что back4app требует файл сертификата без защиты паролем.

Служба Apple Push Notification имеет две отдельные среды: одну для приложений в разработке и одну для приложений в производстве.

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

При выпуске приложения в App Store вам нужно будет создать производственный сертификат. Чтобы сделать это, повторите шаги, которые мы прошли в разделе « Создание сертификатов » этого учебного пособия, но выберите службу Apple Push Notification SSL («Песочница и производство») . Обратите внимание, что в Keychain Access имя сертификата будет следующим: Apple Push Services: {Bundle ID} .

Обратите внимание, что вам может не понадобиться создавать два отдельных сертификата, в зависимости от того, какую реализацию push-уведомлений вы используете. С начала этого года Apple разрешила создать сертификат двойного назначения — тип службы push-уведомлений Apple («песочница и производство»), который можно использовать для подключения к обеим средам. К сожалению, некоторые службы, такие как back4app, еще не были обновлены, чтобы использовать эти новые сертификаты и требовать выделенный для каждой среды.

В этом руководстве мы будем использовать back4app для реализации наших push-уведомлений на стороне сервера. Back4app — это сервис, который предоставляет простой в использовании и бесплатный (с ограничениями) бэкэнд для вашего приложения. Он работает в качестве хост-сервера для проекта Parse Server .

Чтобы настроить back4app, вам нужно будет зайти на back4app.com и зарегистрировать аккаунт, если у вас его еще нет.

Как только вы зарегистрируетесь, вы попадете на пустой экран, где будут показаны все ваши приложения. Чтобы создать новое, нажмите кнопку « Создать новое приложение Parse» в верхнем левом углу. На следующем экране введите имя своего приложения и нажмите « Далее» .

Как только ваше приложение будет создано, вы попадете на экран с целой кучей различных идентификаторов и ключей. Те, которые мы должны принять к сведению, это идентификатор приложения , адрес API разбора и ключ клиента . Получив их копию, вы можете нажать кнопку Закрыть в нижней части страницы.

Теперь вы должны быть на главном экране панели инструментов для вашего приложения. Чтобы настроить реализацию push-уведомлений, перейдите на страницу настроек push-уведомлений iOS . Здесь нажмите кнопку « Выбрать файл» и загрузите файл .p12, который вы создали ранее. Нажмите « Отправить», и ваш идентификатор пакета должен появиться в списке, как показано на следующем снимке экрана:

Информация о загруженном сертификате

На последнем этапе нашей установки нам необходимо загрузить и добавить Parse SDK в наше приложение. Для этого вы можете выполнить первые три шага руководства по быстрому запуску iOS для back4app.

После того, как вы завершили настройку Parse SDK и добавили необходимый код конфигурации в свое application(_:didFinishLaunchingWithOptions:) , добавьте следующий метод в свой класс AppDelegate :

1
2
3
4
5
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let installation = PFInstallation.current()
    installation?.setDeviceTokenFrom(deviceToken)
    installation?.saveInBackground()
}

Этот метод будет вызван, если пользователь примет запрос вашего приложения на показ уведомлений. В частности, метод registerForRemoteNotifications который мы ранее вызывали в нашем application(_:didRegisterForRemoteNotificationsWithDeviceToken:) приложения, будет вызывать application(_:didRegisterForRemoteNotificationsWithDeviceToken:) только он application(_:didRegisterForRemoteNotificationsWithDeviceToken:) обработку. В нашей реализации этого метода мы просто получаем данные об устройстве и загружаем их в приложение разбора back4app.

Теперь, когда все наши настройки завершены, вы можете создать и запустить свое приложение на устройстве iOS. Как только ваше приложение откроется, вы увидите следующее предупреждение:

Оповещение об авторизации уведомлений

Нажмите кнопку « Разрешить» , и ваше приложение зарегистрирует себя для удаленных уведомлений.

Теперь вы можете перейти на панель инструментов Parse для своего приложения. Как только вы окажетесь на панели инструментов для своего приложения, нажмите Core на левой боковой панели, если она еще не выбрана. Как только основной раздел будет расширен, вы сможете увидеть общее количество объектов установки для вашего приложения. На данный момент, это должно показать 1 как на этом скриншоте:

Количество объектов установки Parse Dashboard

Если это число по-прежнему равно 0, вам нужно будет вернуться и проверить, правильно ли вы скопировали весь код в свой класс AppDelegate , включая идентификатор приложения back4app и ключ клиента.

Убедившись, что ваше приложение сохранило свои установочные данные в Parse, перейдите в раздел Push на левой боковой панели Parse Dashboard. Теперь вы должны быть на экране, где вы можете отправить свое собственное уведомление. На данный момент вы можете оставить все настройки как есть и просто ввести собственное сообщение под заголовком « Напишите ваше сообщение» .

Когда вы будете готовы, заблокируйте экран вашего устройства iOS, а затем нажмите кнопку « Отправить» в правом нижнем углу панели анализа. Через несколько секунд вы увидите, что ваше push-уведомление появится на экране блокировки:

Успешное push-уведомление

Поздравляем! Вы только что успешно настроили push-уведомления для приложения iOS! Как вы можете видеть, помимо утомительного создания SSL-сертификатов, использование службы, такой как back4app, делает реализацию push-уведомлений довольно простой.

Конечно, есть и другие сервисы, кроме back4app, которые вы можете использовать для push-уведомлений, включая Backendless , Google Firebase и даже собственный Apple CloudKit . Я выбрал back4app для использования в этом руководстве, так как большинство настроек push-уведомлений выполняются аналогично. Он также предлагает множество других замечательных бесплатных функций, которыми может воспользоваться любое приложение.

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

  • iOS SDK
    Разместите серверную часть Parse SDK для вашего iOS-приложения в приложении back {4}
    Франческо Франкини
  • iOS SDK
    Game Center и списки лидеров для вашего приложения для iOS
    Франческо Франкини
  • IOS
    Что нового в iOS 10
    Маркус Мюльбергер
  • Firebase
    Firebase для Android: уведомления и приглашения приложений
    Пол Требилкокс-Руис