Как настроить iOS Push-уведомления? Детальный гайд
Какие основные виды iOS Push-уведомлений существуют? Как их правильно внедрить? Как отправить уведомление так, чтобы пользователь его не увидел? iOS developer Надзея Савицкая рассказывает на конкретных примерах и делится кодом.
Читать другие статьи эксперта:
- Как обхитрить документацию виджетов iOS? 4 практических способа
- Как распространять iOS приложение: 4 кейса
— С пушами мы все сталкиваемся каждый день. От многих даже устаем и запрещаем приложениям их отправлять. Но несмотря на то, что никто из разработчиков не может гарантировать на 100% доставку уведомлений пользователям, они все еще остаются одним из главных инструментов вовлечения потребителей, — рассказывает Надзея.
Local Push Notifications
— Начнем с самого простого. У меня как у разработчика нет ничего, кроме Xcode и платного аккаунта разработчика. Свое приложение я разрабатываю одна, без back-end и без использования каких-либо сторонних сервисов, — улыбается Надзея, — Да, вы не ослышались: для того, чтобы использовать push notifications, нужно иметь платный аккаунт разработчика. С таким сетапом я смогу отправлять пользователям только Local Push Notifications. Как это выглядит для разработчика: в Xcode во вкладке Signing & Capabilities добавляется новая capability — Push Notifications.
Дальше мы уже можем писать код для запроса разрешения на отправку уведомлений пользователю. Когда будет разрешение, мы зарегистрируем токен девайса в APNs — Apple Push Notifications Service. Этот токен — адрес конкретного девайса, по которому можно будет отправлять уведомления конкретному пользователю.
Пользователь в любой момент может запретить отправку уведомлений. Разработчику на это не надо никак реагировать и что-либо дополнительно писать в коде. Девайс-токен остается активным на тот случай, когда пользователь передумает и снова включит отправку уведомлений.

— Для отправки Local Push Notifications нужно написать еще пару строк кода, — добавляет Надзея, — Можно создать расписание с любым количеством уведомлений так, чтобы они все отправлялись в нужном графике. Например, это может быть схема из 5 уведомлений, где первое уведомление отправляется через сутки от последней пользовательской сессии, второе — через три дня, дальше — через пять, семь и десять, или как вы сами придумаете.

— Минусы Local Push Notifications заключаются в том, что их никак не изменить после релиза приложения. Для любых изменений в текстах или расписании нужно будет пересобирать сборку и заново проходить ревью.
Remote Push Notifications
— К нашему сетапу из Local Push Notifications надо добавить провайдер, и можно будет отправлять уведомления пользователям более гибко. Под провайдером может быть как серверная часть приложения, так и любой из сторонних сервисов, таких как Firebase, Amazon Simple Notification Service, Braze, Kulumos, Onesignal, Airship. Мы можем использовать в одном приложении как Local Push Notifications, так и Remote Push Notifications.
Для настройки любого из вышеперечисленных сервисов разработчику необходимо с личного кабинета developer.apple.com скачать ключ .p8 и загрузить в личном кабинете провайдера, например, Firebase. Как интегрировать любой из сервисов в свое приложение, лучше всего опишут документации на официальных сайтах. Если сервис был настроен, а отправленное тестовое уведомление так и не доходит до нужного девайса, можно воспользоваться приложением для проверки Remote Push Notifications — например, onmyway133.com. Так можно понять, на какой стороне ошибка: в интеграции сервиса или в настройке уведомлений.
Remote Notification Payload
— По своей сути, уведомление — это некоторая информация, которая написана определенным образом, она называется payload, — объясняет Надзея, — Эту информацию можно редактировать, добавляя или убирая некоторые поля, тем самым изменяя внешний вид и функции уведомлений. Давайте рассмотрим некоторые примеры.
Самое простое уведомление содержит Title и Body:

На месте простого текста можно отправлять ключи локализации для того, чтобы пользователю отображался текст на нужном языке:

Можно добавить поле для добавления badge и нужного числа на нем:

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

И передавать какую-то кастомную информацию:

Silent Push Notifications
— Часто для клиент-серверного приложения разработчики хотят обновлять какую-то информацию, когда приложение у пользователя находится в бэкграунде (свернуто). Для этого подойдут Silent Push Notifications. При отправке таких уведомлений пользователи их не увидят, но приложение сможет понять, что необходимо сделать какое-то действие, например, обновить какую угодно информацию с сервера.
Для реализации этих уведомлений в Xcode во вкладке Signing & Capabilities добавляется еще одна capability — Background Modes. В ней выбирается пункт Remote notifications.
В payload уведомления необходимо добавить поле "content-available" со значением 1 или true.

Теперь разработчику осталось только поймать такое уведомление. В didReceiveRemoteNotification методе необходимо сделать проверку на Silent Push Notification и вызвать нужный метод обновления.

Silent Push Notification не придет на устройство если:
Другие Push Notifications
— Кроме вышеперечисленного есть еще следующие виды уведомлений:
— Я постаралась рассказать про основные виды iOS Push Notifications, — завершает Надзея, — Надеюсь, статья была полезной.
Чтобы делиться своей экспертизой в блоге Anywhere Club, заполняй форму Стань героем клуба.