Создание интерактивных push-уведомлений для iOS
В iOS 8 появились интерактивные уведомления, которые позволяют пользователям совершать действия прямо из баннера уведомления. Теперь Wavesend предлагает категории iOS — функцию, которая позволяет создавать кастомные кнопки в Wavesend Control Panel. Узнать больше
Когда ваше Application вызывает registerDevice, Wavesend API возвращает ответ, содержащий список доступных категорий с их ID и подробной информацией о каждой кнопке:
{ "status_code": 200, "status_message": "OK", "response": { "iosCategories": [ { "categoryId": 65, "buttons": [ { "id": 0, "label": "Rate", "type": "1", "startApplication": 1 }, { "id": 1, "label": "Later", "type": "0", "startApplication": 0 } ] } ] }}Теперь эти категории доступны на устройстве, поэтому они могут корректно отображаться при поступлении сообщения, когда ваше Application не запущено на переднем плане.
Чтобы отправить Push с категорией из Wavesend Journey, просто выберите ее в настройках платформы iOS при составлении сообщения. Если вы отправляете Push удаленно через Wavesend API, в запросах createMessage следует использовать параметр ios_category с соответствующим ID категории в качестве значения:
{ "categoryId": 65 // Optional. String value. iOS8 category ID from Wavesend}Когда приходит Push-сообщение, содержащее ID категории, Wavesend SDK отображает уведомление с набором кнопок, которые содержит эта категория.
Кнопки и действия в Wavesend iOS SDK
Section titled “Кнопки и действия в Wavesend iOS SDK”Чтобы выполнять различные действия при открытии приложения, необходимо создать собственную реализацию UNUserNotificationCenterDelegate и переопределить в ней метод didReceiveNotificationResponse:
CustomDelegate
Section titled “CustomDelegate”class CustomDelegate: NSObject, UNUserNotificationCenterDelegate { func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { let identifier = response.actionIdentifier let category = response.notification.request.content.categoryIdentifier
if category == "10212" { if identifier == "1" { // DO SOMETHING } else { // DO SOMETHING ELSE } }
completionHandler() }}Где identifier — это ID кнопки, а category — категория, полученная из полезной нагрузки уведомления.
Затем создайте экземпляр этого класса и передайте его в Wavesend SDK с помощью прокси-метода:
AppDelegate
Section titled “AppDelegate”func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { Pushwoosh.sharedInstance().registerForPushNotifications()
let customDelegate = CustomDelegate() Pushwoosh.sharedInstance().notificationCenterDelegateProxy?.add(customDelegate)
return true}