Создание интерактивных push-уведомлений для iOS
В iOS 8 были представлены интерактивные уведомления, позволяющие пользователям выполнять действия прямо из баннера уведомления. Теперь Pushwoosh предлагает Категории iOS, которые позволяют создавать кастомные кнопки в Панели управления Pushwoosh. Узнать больше
Когда ваше приложение вызывает registerDevice
, API Pushwoosh возвращает ответ, содержащий список доступных Категорий с их идентификаторами и деталями для каждой кнопки в следующем формате:
{ "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 } ] } ] }}
Эти Категории теперь доступны на устройстве, поэтому они могут быть корректно отображены при поступлении сообщения, даже если ваше приложение не запущено на переднем плане.
Чтобы отправить push-уведомление с категорией из Customer Journey в Pushwoosh, просто выберите ее в настройках платформы iOS при составлении сообщения. Если вы отправляете push-уведомления удаленно через API Pushwoosh, в запросах createMessage
следует использовать параметр ios_category
с соответствующим ID Категории в качестве значения:
{ "categoryId": 65 // Необязательно. Строковое значение. ID категории iOS8 из Pushwoosh}
Когда приходит push-сообщение, содержащее ID категории, Pushwoosh SDK отображает уведомление с набором кнопок, которые содержит эта категория.
Кнопки и действия в Pushwoosh iOS SDK
Anchor link toДля выполнения различных действий при открытии приложения необходимо создать кастомную реализацию UNUserNotificationCenterDelegate
и переопределить его метод didReceiveNotificationResponse
:
CustomDelegate
Anchor link toclass 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" { // ВЫПОЛНИТЬ ДЕЙСТВИЕ } else { // ВЫПОЛНИТЬ ДРУГОЕ ДЕЙСТВИЕ } }
completionHandler() }}
Где identifier
— это ID кнопки, а category
извлекается из полезной нагрузки (payload) уведомления.
Затем создайте экземпляр этого класса и передайте его в Pushwoosh SDK, используя прокси-метод:
AppDelegate
Anchor link tofunc application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { Pushwoosh.sharedInstance().registerForPushNotifications()
let customDelegate = CustomDelegate() Pushwoosh.sharedInstance().notificationCenterDelegateProxy?.add(customDelegate)
return true}
