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. Aprende más

Cuando tu aplicación llama a registerDevice, la API de Pushwoosh devuelve la 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 se pueden mostrar 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 iOS de Pushwoosh

Anchor link to

Para realizar diversas acciones al abrir una aplicación, debes crear una implementación personalizada de UNUserNotificationCenterDelegate y anular 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" {
// HACER ALGO
} else {
// HACER OTRA COSA
}
}
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