# Мобильный пуш-карусель
Как сделать мобильный пуш в виде карусели с товарами.

# 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])
}
}
# Как отправлять
Об отправке пуша-карусели читайте в руководстве маркетолога.