Skip to content

Создание интерактивных 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:

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 с помощью прокси-метода:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Pushwoosh.sharedInstance().registerForPushNotifications()
let customDelegate = CustomDelegate()
Pushwoosh.sharedInstance().notificationCenterDelegateProxy?.add(customDelegate)
return true
}