Saltar al contenido

Crear notificaciones push interactivas en iOS

iOS 8 introdujo las notificaciones interactivas, permitiendo a los usuarios realizar acciones directamente desde el banner de notificación. Pushwoosh ahora ofrece Categorías de iOS, que te permiten crear botones personalizados dentro del Panel de Control de Pushwoosh. Más información

Cuando tu aplicación llama a registerDevice, la API de Pushwoosh devuelve una respuesta que contiene una lista de Categorías disponibles con sus ID y detalles para cada botón, de la siguiente manera:

{
"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
}
]
}
]
}
}

Estas Categorías ahora están disponibles en el dispositivo, por lo que pueden mostrarse correctamente cuando llega un mensaje y tu aplicación no se está ejecutando en primer plano.

Para enviar tu notificación push con una categoría desde Pushwoosh Journey, simplemente selecciónala en la configuración de la plataforma iOS mientras redactas tu mensaje. En caso de que estés enviando tus notificaciones push de forma remota a través de la API de Pushwoosh, en las solicitudes de createMessage debes usar el parámetro ios_category con el ID de Categoría correspondiente como valor:

{
"categoryId": 65 // Opcional. Valor de cadena. ID de categoría de iOS8 de Pushwoosh
}

Cuando llega un mensaje push que contiene un ID de categoría, el SDK de Pushwoosh muestra la notificación con el conjunto de botones que contiene esta categoría.

Botones y acciones en el SDK de Pushwoosh para iOS

Anchor link to

Para realizar diversas acciones al abrir una aplicación, debes crear una implementación personalizada de UNUserNotificationCenterDelegate y sobrescribir su método 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" {
// DO SOMETHING
} else {
// DO SOMETHING ELSE
}
}
completionHandler()
}
}

Donde identifier es un ID de botón, y category se deriva de la carga útil de la notificación.

Luego, crea una instancia de esta clase y pásala al SDK de Pushwoosh usando el método proxy:

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
}
Notificación push interactiva de iOS con botones de acción personalizados mostrados en el banner de notificación