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

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

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

Когда ваше приложение вызывает registerDevice, API Pushwoosh возвращает ответ, содержащий список доступных Категорий с их 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-уведомления удаленно через API Pushwoosh, в запросах createMessage следует использовать параметр ios_category со значением соответствующего ID категории:

{
"categoryId": 65 // Необязательно. Строковое значение. ID категории iOS 8 из Pushwoosh
}

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

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

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 извлекается из полезной нагрузки уведомления.

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

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 с кастомными кнопками действий, отображаемыми в баннере уведомления