Отправка push-уведомлений iOS через APN

Вовлеченность пользователей имеет первостепенное значение в современном мире, независимо от того, что вы продаете или предлагаете своим клиентам. И уведомления с мобильных телефонов играют в этом плане первоклассный ход. Регулярно взаимодействуя с вашими клиентами с помощью push-уведомлений, можно своевременно выпускать обновления и оставаться с ними на связи. Итак, давайте сегодня обсудим настройку службы push-уведомлений Apple (APN) с приложением Node.js.

В этом блоге мы подробно обсудим службы APN, включение и регистрацию удаленных уведомлений, идентификаторы токенов устройств и пакет узла APN с помощью образца iOS. Убедитесь, что у вас есть физическое устройство iOS, так как push-уведомления не будут работать с симулятором. Кроме того, для создания сертификата push-уведомлений необходима учетная запись участника программы Apple Developer Program.

Знакомство со службой удаленных уведомлений

Устройства Apple используют службу удаленных уведомлений для отправки и получения уведомлений в любой из iOS, tvOS или macOS. Настройка удаленного уведомления должна быть настроена на вашем устройстве Apple с соответствующими токенами и сертификатами устройства. В противном случае есть вероятность, что службы уведомлений не будут работать должным образом. 

Основным компонентом этой настройки удаленного уведомления является служба Apple Push Notification, также известная как APN. APN на самом деле представляет собой набор сервисов, которые позволяют разработчику отправлять уведомления со своего сервера на целевые устройства iOS. APN – это надежные и безопасные методы для установления соединения между сервером провайдера и отдельными устройствами Apple. 

APN содержит два компонента: компонент шлюза и компонент обратной связи, оба из которых являются обязательными. 

Компонент шлюза устанавливает соединение TLS со стороны провайдера, что позволяет серверу провайдера отправлять сообщения в Apple, которые будут обрабатываться Apple, а затем перенаправляться на соответствующее устройство. Рекомендуется поддерживать соединение в постоянном режиме. Связь компонент устанавливается только время от времени , чтобы определить и удалить устройства , которые больше не получают уведомления для конкретных приложений. Это обязательный компонент любого устройства Apple.

Чтобы получать и обрабатывать удаленные уведомления, предоставляемое вами приложение должно состоять из четырех основных компонентов. Они есть:

  1. Удаленное подключение включено
  2. Зарегистрированная служба Apple Push Notification Service (APN) и токен устройства.
  3. Отправка токена устройства поставщику уведомлений
  4. Установить поддержку для обработки входящих уведомлений на устройстве

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

Хорошо иметь четкое представление об APN прямо из руководств Apple.

Поставщик имеет право на многие обязанности. Некоторые из основных из них приведены ниже:

  • Получите глобально уникальные токены устройств для конкретных приложений и все соответствующие данные, относящиеся к вашему приложению, на устройствах пользователей.
  • Определите, когда удаленные уведомления должны отправляться на каждое устройство.
  • Создание и отправка запросов на уведомления в APN.

Только при наличии надлежащих прав на общение с APN приложение может обрабатывать удаленные уведомления. Без этих прав приложения отклоняются App Store. Узнайте подробности о правах, необходимых для вашего приложения, в разделе «Включить push-уведомление» на странице справки Xcode на веб-сайте Apple. После включения уведомлений регистрация приложения является обязательной при каждом запуске приложения. Процесс регистрации приложения включает следующие шаги для всех устройств Apple.

  • Ваше приложение запрашивает регистрацию в APN
  • APN отправляет токены устройств для конкретных приложений
  • Система доставляет устройство в ваше приложение, вызывая метод в делегате вашего приложения.
  • Токен устройства передается поставщику, связанному с приложением. 

Ваше приложение вызывает метод registerForRemoteNotifications во время запуска. Это инициирует контакт объекта приложения с APN для получения токенов устройства, специфичных для приложения. Код ниже показывает, как получить токен вашего устройства:

fetch your device token

Быстрый код: 

как получить токен вашего устройства

Таким образом, система устанавливает зашифрованное и постоянное IP-соединение между приложением и APNS всякий раз, когда приложение запускается на устройстве. Это соединение устанавливает и позволяет устройству получать уведомления, поэтому требует настройки учетной записи разработчика Apple и создания необходимого сертификата.

Чтобы наши серверы могли взаимодействовать с APN, в Node.js. необходимо выполнить множество подключений и настроек. Легче выбрать пакеты apn с предустановленным кодом для установления безошибочных соединений. Этот готовый к использованию пакет – хороший выбор для производственной среды. Пакет основан на HTTP / 2 API и способен максимизировать обработку и доставку уведомлений. Он также собирает неотправленные уведомления при возникновении ошибки. Официальное хранилище APN пакета дает лучшее понимание этой темы.

Создание сертификатов

Одним из основных шагов в настройке служб уведомлений является создание сертификата для вашего приложения и устройства. Этот сертификат сообщает APN, что у нашего сервера есть законные разрешения на отправку и получение уведомлений о нашем приложении. Это означает, что сертификат SSL устанавливает безопасное соединение с APN. Сертификат для нашего создается нами и предназначен только для нашего приложения.

Чтобы создать сертификат, выполните следующие действия:

  1. Откройте проект из Xcode и выберите вкладку Capabilities в Target.
  2. Включите переключатель push-уведомлений и дождитесь завершения автоматической настройки.
  3. В центре разработчиков найдите наше приложение в нашей учетной записи разработчика. Нажмите Edit (редактировать).
  4. Откройте на этом экране раздел «Push-уведомления».
  5. Откройте «Создать сертификат» на вкладке «SSL-сертификат для разработки».
  6. Следуйте процедуре, описанной в следующих шагах на экране, чтобы создать сертификат. Сертификат будет готов к загрузке после успешного создания.
  7. Скачайте сертификат aps_development.cer.
  8. Выберите сертификат и закрытый ключ из списка и экспортируйте файл p12. Введите пароль и запомните, чтобы запомнить вновь созданный пароль, так как он понадобится Apple для отправки push-уведомлений.

Получение токена устройства

В приведенном выше разделе мы видели общий код для получения токенов устройств. Давайте рассмотрим код конкретного сценария, который мы можем в дальнейшем использовать для создания сценария Node.js.

Наш образец приложения называется SimplRTApp. Нам нужно идентифицировать токены устройства для push-уведомлений из примера приложения. Итак, чтобы получить токен устройства, добавьте следующие методы в наш AppDelegate.swift .

SimplRTApp
SimplRTApp

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

Создание скрипта Node.js

Теперь у нас есть файл p12 для установления безопасного соединения с APN и токен устройства для отправки push-уведомлений на это устройство из нашего SimpleRTApp. Все, что нам сейчас нужно, это создать нашу программу на Node.js и протестировать push-уведомления.

Чтобы создать сценарий Node.js:

  1. Откройте приложение терминала.
  2. Необходимо установить модуль, обрабатывающий APN-соединения. Для этого введите npm install apn. 
  3. Скопируйте или сохраните файл p12 в ту же папку, что и наш скрипт Node.js.
  4. Создайте приведенный ниже скрипт (доступен на Github).
Node.js скрипт

В скрипте <device-token> и <p12-password> заменяются значениями, специфичными для нашего приложения. Приведенный выше сценарий выполняет следующие действия для настройки push-уведомления в режиме реального времени при срабатывании.

  • Установите соединение
  • Установите объект провайдера
  • Создать уведомление и отправить с помощью метода send ()
  • Завершить выполнение, когда есть ответ либо на успешный, либо на ошибочный сценарий.

С помощью приведенного выше сценария настройка push-уведомлений завершена. Пришло время протестировать сценарий. Для тестирования введите в терминале node send_push.js и дождитесь прибытия уведомления на указанное устройство Apple.

Полный скрипт для службы push-уведомлений доступен в GitHub для справки. 

Рекомендуется включать в уведомления настраиваемое действие. Это позволяет пользователю быстро общаться с правильным предустановленным ответом. Примеры настраиваемых действий включают кнопку «Ответить» или «Отметить как прочитанное» в уведомлении о сообщении, параметры «Установить» или «Отложить» в уведомлении об обновлении ОС и т. д. В нашем случае одно простое и простое настраиваемое действие будет «Отправить заново».

Простые изменения в коде Node.js, опубликованном выше, активируют эти настраиваемые действия. Посмотрим, как поступить.

При настройке объекта уведомления укажите ниже:

Объект уведомления iOS

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

Объект уведомления IoS

Таким образом, для нашего AppDelegate.swift скрипт будет следующим:

Объект уведомления AppDelegate.swift
Объект уведомления AppDelegate.swift

Заключение

Подойдя к концу этого блога, мы подробно обсудили все нижеприведенные моменты. 

  • Удаленные уведомления
  • APNS
  • Создание сертификата
  • Получение токенов устройства
  • Код Node.js для доставки push-уведомлений

Ответить