Перейти к содержанию

Создание интерактивных push-уведомлений для iOS

В iOS 8 появились интерактивные уведомления, позволяющие пользователям выполнять действия прямо из баннера уведомления. Pushwoosh теперь предлагает Категории iOS, которые позволяют создавать кастомные кнопки в Панели управления Pushwoosh. Узнать больше

Когда ваше приложение вызывает registerDevice, Pushwoosh 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
}
]
}
]
}
}

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

Чтобы отправить push-уведомление с категорией из Pushwoosh Journey, просто выберите ее в настройках платформы iOS при составлении сообщения. Если вы отправляете push-уведомления удаленно через Pushwoosh API, в запросах createMessage следует использовать параметр ios_category со значением соответствующего ID Категории:

{
"categoryId": 65 // Опционально. Строковое значение. ID категории iOS8 из Pushwoosh
}

Когда приходит push-уведомление, содержащее ID категории, Pushwoosh SDK отображает уведомление с набором кнопок, которые содержит эта категория.

Кнопки и действия в Pushwoosh iOS SDK

Anchor link to

Чтобы выполнять различные действия при открытии приложения, вам следует создать кастомную реализацию UNUserNotificationCenterDelegate и переопределить ее метод didReceiveNotificationResponse:

CustomDelegate

Anchor link to
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" {
// СДЕЛАТЬ ЧТО-ТО
} else {
// СДЕЛАТЬ ЧТО-ТО ЕЩЕ
}
}
completionHandler()
}
}

Где identifier — это ID кнопки, а category извлекается из полезной нагрузки уведомления.

Затем создайте экземпляр этого класса и передайте его в Pushwoosh SDK с помощью прокси-метода:

AppDelegate

Anchor link to
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Pushwoosh.sharedInstance().registerForPushNotifications()
let customDelegate = CustomDelegate()
Pushwoosh.sharedInstance().notificationCenterDelegateProxy?.add(customDelegate)
return true
}
Интерактивное push-уведомление для iOS с кастомными кнопками действий, отображаемыми в баннере уведомления