# Мобильный пуш-карусель
Как сделать мобильный пуш в виде карусели с товарами.
# iOS
# Настройка сервиса
# Notification Service Extension
Расширение NotificationServiceExtension
позволит вашему приложению получать и отображать расширенные мобильные пуши с изображениями, кнопками и счетчиками.
Выполните следующие шаги в XCode в открытом проекте:
- В меню
File
выберитеNew => Target...
.
- В появившемся списке шаблонов выберите
Notification Service Extension
и нажмитеNext
.
- Укажите название продукта как
NotificationServiceExtension
и нажмитеFinish
. Не выбирайтеActivate
в следующем диалоге. НажмитеCancel
.
- В навигаторе проекта кликните на папку
NotificationServiceExtension
, откройте файлNotificationService.swift
и замените его содержимое полностью на это:
import UserNotifications
class NotificationService: UNNotificationServiceExtension {
var contentHandler: ((UNNotificationContent) -> Void)?
var receivedRequest: UNNotificationRequest!
var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
self.receivedRequest = request;
self.contentHandler = contentHandler
bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
if let bestAttemptContent = bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
override func serviceExtensionTimeWillExpire() {
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
}
# Добавление возможностей для расширенного пуша
На этом шаге проверяем, что приложение может получать внешние push-уведомления. Убедитесь, что вы выполняете эти действия на основном таргете приложения, а не в Notification Service Extension
.
Выберите корневой проект, затем главный таргет и в нем вкладку
Signing & Capabilities
В ней найдите вкладку
All
и в секцииBackground Modes
включите чекбоксRemote notifications
.
- Слева в списке таргетов появится пункт с
Push Notifications
. Если этого не произошло, нажмите[+ Capability]
и в появившемся окне найдите и добавьте пунктPush Notifications
.
# Включение отображения пуша-карусели
# Установите расширение контента уведомления
Выполните следующие шаги в XCode в открытом проекте:
- В меню
File
выберитеNew => Target...
.
- В появившемся списке шаблонов выберите
Notification Content Extension
и нажмитеNext
.
- Укажите название продукта как
NotificationContentExtension
и нажмитеFinish
. НажмитеActivate
в следующем диалоге.
# Скачайте код
Скачайте содержимое этой директории (opens new window) и замените им содержимое папки NotificationContentExtension
в вашем проекте.
# Установите категорию пуш-уведомления
В файле AppDelegate.swift
в метод didFinishLaunchingWithOptions
добавьте следующий код для активации пуша-карусели:
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.badge, .alert, .sound]) { _, _ in }
UIApplication.shared.registerForRemoteNotifications()
let options: UNAuthorizationOptions = [.alert]
UNUserNotificationCenter.current().requestAuthorization(options: options) { authorized, _ in
if authorized {
let categoryIdentifier = "carousel"
let carouselNext = UNNotificationAction(identifier: "carousel.next", title: "След", options: [])
let carouselPrevious = UNNotificationAction(identifier: "carousel.previous", title: "Пред", options: [])
let carouselCategory = UNNotificationCategory(identifier: categoryIdentifier, actions: [carouselNext, carouselPrevious], intentIdentifiers: [], options: [])
UNUserNotificationCenter.current().setNotificationCategories([carouselCategory])
}
}
# Как отправлять
Об отправке пуша-карусели читайте в руководстве маркетолога.