Skip to content

Интеграция rich-уведомлений в iOS

Начиная с iOS 10, к push-уведомлениям можно прикреплять статичное или анимированное изображение и даже видео. Оно будет отображаться прямо в уведомлении, когда пользователь нажмет на него с усилием (force-tap).

Включить эту функциональность очень просто, и для этого требуется совсем немного кода. Давайте сделаем это!

1. Создание Notification Service Extension

Section titled “1. Создание Notification Service Extension”

Сначала создайте Notification Service Extension. Это расширение загружает контент, который будет показан пользователю.

Добавьте новую цель (target) в ваш проект (File -> New -> Target) и создайте Notification Service Extension.

Создание Notification Service Extension

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

import UserNotifications
import WavesendFramework
class NotificationService: UNNotificationServiceExtension {
var contentHandler: ((UNNotificationContent) -> Void)?
var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
PWNotificationExtensionManager.shared().handle(request, contentHandler: contentHandler)
}
}

3. Разрешение небезопасных URL-адресов вложений

Section titled “3. Разрешение небезопасных URL-адресов вложений”

Notification Service Extension — это отдельный двоичный файл, у которого есть собственный файл Info.plist. Добавьте App Transport Security Settings с флагом Allow Arbitrary Loads, установленным в true, в файл Info.plist расширения.

Info.plist:

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

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

Section titled “4. Отправка rich-уведомления”

Чтобы отправить rich-уведомление, просто укажите URL-адрес файла в поле BANNER URL.

Вуаля! Нажмите на уведомление с усилием (force-tap), и все готово!

Пример

Поделитесь с нами своим мнением

Section titled “Поделитесь с нами своим мнением”

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