ios - recuperar - Clave de colapso de la notificación push de Apple
ver notificaciones antiguas iphone (5)
Si APN intenta entregar una notificación pero el dispositivo está fuera de línea, la notificación se almacena por un período de tiempo limitado y se entrega al dispositivo cuando esté disponible.
Sólo se almacena una notificación reciente para una aplicación en particular . Si se envían varias notificaciones mientras el dispositivo está fuera de línea, cada nueva notificación hace que se descarte la notificación previa. Este comportamiento de mantener solo la notificación más reciente se conoce como notificaciones coalescentes.
Así que no hay necesidad de collapse_key
en iOS.
Para su información, collapse_key
solo es útil cuando el dispositivo está fuera de línea / inactivo:
Este parámetro identifica un grupo de mensajes (por ejemplo, con collapse_key: "Actualizaciones disponibles") que se pueden contraer, de modo que solo se envía el último mensaje cuando se puede reanudar la entrega. El objetivo es evitar el envío de demasiados mensajes cuando el dispositivo vuelve a estar en línea o se activa (consulte delay_while_idle).
https://developers.google.com/cloud-messaging/server-ref#downstream
ACTUALIZAR:
Tanto para iOS como para Android (usando collapse_key), si el dispositivo está fuera de línea (es decir, el servidor push de Apple / Google no puede alcanzarlo), el servidor push sobrescribe cualquier notificación previa y solo conserva la última.
Si el dispositivo está en línea , supongo que depende de usted hacer lo que quiera con la notificación recibida . Al menos en Android, puede decidir si desea "apilar las cosas", si desea sobrescribir cualquier notificación previa en el área de notificación, o si desea sobrescribir cualquier notificación previa del mismo tipo.
NotificationManager notificationManager = ...;
String appName = ...;
NotificationCompat.Builder builder = ...
// Always use the same id, so only the last notification will be displayed in the notification area.
int notId = 0;
// Always use a different id, so all notifications will pile up in the notification area
notId = new Random().nextInt(100000);
// Uses the type of notification as id, so you''ll only have up to one notification per type
// in the notification area. It''s like using collapse_key, but on the app itself.
// That type should should be some additional data in the notification you sent.
notId = notificationType;
Notification notification = builder.build();
notificationManager.notify(appName, notId, notification);
Al usar las notificaciones push de Google, se me permite especificar un valor de collapse_key para que un dispositivo no reciba varias notificaciones de la misma collapse_key. ¿Tiene APNS una característica similar o alguien sabe cómo emular esta funcionalidad?
Con iOS 10 hay un nuevo "apns-collapse-id" que parece que manejará este tipo de necesidad. Si tiene una cuenta de desarrollador de Apple, puede ver los videos de la sesión de notificación de la WWDC 2016 (video de introducción de 707 https://developer.apple.com/videos/play/wwdc2016/707/ ).
La respuesta de Doody P funciona para las notificaciones remotas, pero también hay un equivalente para las notificaciones activadas localmente: cuando crea su UNNotificationRequest, puede configurar el parámetro de identifier
a lo que haya estado usando como una clave de contracción. Después de activarse, la notificación de inserción mostrará solo la última versión que envió con ese identificador.
(Aunque aún se envían a través de APN, enviamos notificaciones push de manera silenciosa y luego las reactivamos como notificaciones locales porque necesitamos asegurarnos de que nuestros usuarios estén conectados).
Hay ejemplos de código y demostraciones útiles para administrar las notificaciones entregadas en https://developer.apple.com/videos/play/wwdc2016/707/ : la sección clave es de ~ 18: 00 - 21:00.
No hay tal característica en iOS. Sin embargo, dado que las notificaciones push son enviadas por un servidor que está bajo su control, puede hacer un seguimiento de las notificaciones que ha enviado a un dispositivo en particular y decidir si enviar o no nuevas notificaciones. En otras palabras, coloca la lógica en el código del servidor, no en el código de la aplicación de iOS.
A partir de iOS 10 y utilizando la API APNS HTTP / 2.0, puede especificar el apns-collapse-id
y manejar la lógica de colapso en su aplicación.
Las notificaciones contraídas aparecerán como una sola notificación en el dispositivo que se actualiza con datos nuevos. Cada vez que se actualiza una notificación, se coloca en la parte superior de las notificaciones no leídas.
Descripción de apns-collapse-id
tomada de https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html :
Múltiples notificaciones con el mismo identificador de colapso se muestran al usuario como una sola notificación. El valor no debe exceder los 64 bytes. Para obtener más información, consulte la sección Calidad de servicio, Almacenar y reenviar, y Notificaciones fusionadas.
Cuando un dispositivo está en línea, todas las notificaciones que envía se entregan y están disponibles para el usuario. Sin embargo, puede evitar mostrar notificaciones duplicadas empleando un identificador de contracción en múltiples notificaciones idénticas. La clave de encabezado de solicitud APNs para el identificador de colapso es apns-collapse-id y se define en la Tabla 6-2.
Por ejemplo, un servicio de noticias que envía el mismo titular dos veces seguidas podría emplear el mismo identificador de colapso para ambas solicitudes de notificación de inserción. Los APN se encargarían de unir estas solicitudes en una sola notificación para enviarlas a un dispositivo.