EngX Code Review: почни писати код іще краще й побудуй ефективний процес код-рев’ю.

Як налаштувати iOS Push-сповіщення? Детальний гайд

Які основні види iOS Push-сповіщень існують? Як їх правильно впровадити? Як надіслати повідомлення так, щоб користувач його не побачив? iOS developer Надзея Савицька розповідає на конкретних прикладах і ділиться кодом.

iOS developer Надзея Савицька

Читати інші статті експерта:

Щось на айтішному31 травня 2023час читання: 4 хв

— З пушами ми всі стикаємося щодня. Від багатьох навіть втомлюємося й забороняємо застосункам їх надсилати. Але попри те, що ніхто з розробників не може гарантувати на 100% доставку сповіщень користувачам, вони все ще залишаються одним із головних інструментів залучення споживачів, — розповідає Надзея.

Local Push Notifications

— Почнемо з найпростішого. У мене як у розробника немає нічого, окрім Xcode і платного акаунта розробника. Свій застосунок я розробляю сама, без Back-end і без використання будь-яких сторонніх сервісів, — усміхається Надзея. — Так, ви не помилилися: для того, щоб використовувати push notifications, треба мати платний акаунт розробника. З таким сетапом я зможу надсилати користувачам тільки Local Push Notifications. Як це виглядає для розробника: у Xcode у вкладці Signing & Capabilities додають нову capability — Push Notifications.

Push-сповіщення in Xcode

Далі ми вже можемо писати код для запиту дозволу на надсилання сповіщень користувачеві. Коли буде дозвіл, ми зареєструємо токен девайса в APNs — Apple Push Notifications Service. Цей токен — адреса конкретного девайса, за якою можна буде надсилати повідомлення конкретному користувачеві.

Користувач у будь-який момент може заборонити надсилання сповіщень. Розробнику на це не треба ніяк реагувати і щось додатково писати в коді. Девайс-токен залишається активним на той випадок, якщо користувач передумає й знову ввімкне надсилання сповіщень.

Фрагмент коду 1
Фрагмент коду 1


— Для надсилання Local Push Notifications потрібно написати ще кілька рядків коду, — додає Надзея. — Можна створити розклад із будь-якою кількістю сповіщень так, щоб вони всі відправлялися в потрібному графіку. Наприклад, це може бути схема з 5 сповіщень, де перше сповіщення надсилається за добу від останньої користувацької сесії, друге — за три дні, далі — за п’ять, сім і десять або як ви самі придумаєте.

Фрагмент коду 2
Фрагмент коду 2


— Мінуси Local Push Notifications полягають у тому, що їх ніяк не змінити після релізу програми. Для будь-яких змін у текстах або розкладі потрібно буде перезбирати збірку й заново проходити рев’ю.

Remote Push Notifications

Iнфографіка: 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:

Фрагмент коду 3
Фрагмент коду 3


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

Фрагмент коду 4
Фрагмент коду 4


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

Фрагмент коду 5
Фрагмент коду 5


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

Фрагмент коду 6
Фрагмент коду 6


І передавати якусь кастомну інформацію:

Фрагмент коду 7
Фрагмент коду 7

Silent Push Notifications

— Часто для клієнт-серверного застосунку розробники хочуть оновлювати якусь інформацію, коли застосунок у користувача перебуває в бекграунді (згорнуто). Для цього підійдуть Silent Push Notifications. Під час надсилання таких сповіщень користувачі їх не побачать, але застосунок зможе зрозуміти, що необхідно зробити якусь дію, наприклад, оновити яку завгодно інформацію з сервера.

Для реалізації цих сповіщень у Xcode у вкладці Signing & Capabilities додають іще одну capability — Background Modes. У ній вибирають пункт Remote notifications.

Background Modes - Remote notifications

У payload сповіщення необхідно додати поле "content-available" зі значенням 1 або true.

Фрагмент коду 8
Фрагмент коду 8


Тепер розробнику залишилося тільки зловити таке сповіщення. У didReceiveRemoteNotification методі необхідно зробити перевірку на Silent Push Notification і викликати потрібний метод оновлення.

Фрагмент коду 9
Фрагмент коду 9


Silent Push Notification не надійде на пристрій, якщо:

  1. Застосунок було вивантажено з пам’яті, тобто він не в background mode.
  2. На пристрої ввімкнено режим «Low Data Mode».

Інші Push Notifications

— Окрім переліченого вище, є ще такі види сповіщень:

  1. Provisional Push Notifications — користувач не отримає запит на дозвіл надсилання йому повідомлень. І сповіщення відображатимуться без звуку й тільки в Центрі сповіщень.
  2. Critical Alert Push Notification — таке сповіщення надійде користувачеві зі звуком, навіть якщо було ввімкнено режим «Не турбувати». Вам потрібен спеціальний дозвіл від Apple, щоб використовувати цю опцію, тому що вона призначена тільки для особливих випадків.

— Я спробувала розповісти про основні види iOS Push Notifications, — завершує Надзея. — Сподіваюся, стаття була корисною.

Щоб ділитися своєю експертизою в блозі Anywhere Club, заповнюй форму Стань героєм блогу.

Матеріали за темою
Стеж за новинами на улюблених платформах