Aproximadamente durante el tercer trimestre del año pasado, pude usar UNNotificationServiceExtension no solo para descifrar el contenido de las notificaciones push entrantes (un caso de uso común), sino también para eliminar las notificaciones enviadas anteriormente cada vez que llegaba una nueva.
UNUserNotificationCenter.current().getDeliveredNotifications para recuperar las notificaciones entregadas y luego eliminé las que necesitaba eliminar.
Sin embargo, a medida que se acercaba el año nuevo, de repente me di cuenta de que mi aplicación ya no eliminaba las notificaciones entregadas anteriormente del centro de notificaciones, a pesar de que el código aún estaba presente en la extensión del servicio y no arrojaba ningún error, y a pesar del otro código en el la extensión del servicio funciona bien.
Tras la depuración, descubrí que UNUserNotificationCenter.current().getDeliveredNotifications ahora devuelve una matriz vacía de notificaciones incluso cuando hay varias entregadas en la pantalla de bloqueo.
Y UNUserNotificationCenter.current().removeAllDeliveredNotifications() simplemente no hace nada, por lo que incluso usar esa llamada, sin recuperar ni filtrar las notificaciones entregadas, no elimina nada.
¿Alguien sabe si todavía hay una manera de lograr esto?
¿O podría Apple haber prohibido esta funcionalidad?
Parece que el encabezado de solicitud de APN apns-collapse-id podría ser útil aquí.
Podría usarse para actualizar el contenido de la notificación anterior y llevarlo a la parte superior.
Varias notificaciones con el mismo identificador de colapso se muestran al usuario como una sola notificación.
Según los documentos , apns-collapse-id especifica el identifier de notificación (que normalmente es aleatorio). BE podría enviar una nueva notificación de "eliminación" con la identificación dada en la carga útil para usarla en removeDeliveredNotifications(withIdentifiers:) .