Cómo saber el estado de entrega de Push Notification

Estoy usando notificaciones push en una aplicación. Todo va bien.

A veces, el mensaje enviado desde el servidor pero en el lado de la aplicación no se recibe.

En esta situación, tengo que saber qué mensaje falta para entregar (la aplicación no recibió).

¿Hay alguna forma de saber desde el lado del servidor qué mensaje recibe la aplicación y cuáles no?

Nopes, las notificaciones push son “olvídate”.

Apple no le dirá lo siguiente:

  1. No dirá si el mensaje se envió con éxito o no
  2. No dirá si el usuario ha inhabilitado las notificaciones automáticas
  3. muchas otras cosas pero de todos modos …

sin embargo

Por otro lado, cuando el usuario ha optado por Notificaciones Push, su aplicación puede manejar esto, pero hasta cierto punto:

Básicamente, puede agregar lógica en -didReceiveRemoteNotification: y -didFinishLaunchingWithOptions: para contactar a su servidor y decirle a su servidor que el mensaje fue recibido.
Si no se recibió dentro de un intervalo de tiempo en particular, puede volver a enviarlo.

Pero como puede ver, esto podría conducir a un posible escenario de inundación de un usuario inocente con las mismas notificaciones automáticas.
En cierto sentido, lo hostiga para que toque su estúpida notificación de inserción, lo que a su vez puede llevar a que se apaguen las notificaciones automáticas para su aplicación, pero la mayoría de las veces borrará la aplicación y tal vez incluso le otorgará una calificación baja.
Te sirve, diré.

De todos modos, si continúa con esto, deberá implementar un patrón de identificación donde inserte un message identifier único en la carga de la notificación de inserción y cuando su aplicación reciba esta notificación de inserción, debe enviar este message identifier nuevamente al servidor .
Luego, el servidor debe iniciar sesión para que un token de dispositivo en particular devuelva un message identifier , lo que significa que recibió esa notificación de inserción concreta.

Su servidor puede verificar por hora / por día / lo que sea y reenviar un mensaje particular a los tokens de dispositivo que no han informado con el message identifier relativo.

De nuevo, esto significa que su servidor podría necesitar OT a veces.


Hay otros problemas con todo este enfoque:

  1. El usuario recibió una notificación automática pero la rechazó en lugar de abrirla con ella
    • Su servidor asumirá que el usuario no vio la notificación de inserción y enviará esta notificación de inserción nuevamente
  2. Fichas de dispositivo fantasma
    • El usuario aceptó notificaciones push al principio pero luego revocó este privelege
    • El usuario desinstaló la aplicación
    • Básicamente, tokens de dispositivo que una vez se usan para recibir notificación de inserción pero que ya no se usan, muy probablemente debido a su reputación de inundación de mensaje
  3. El usuario recibió una notificación de inserción pero la toca en otro momento
    • podría recibir la misma notificación de inserción varias veces ( muy irritante )
  4. El usuario recibió una notificación de inserción pero la toca cuando no hay conectividad a Internet
  5. El usuario recibió una notificación de inserción pero su servidor está caído, posiblemente frito \ m /

Puede eludir los últimos 3 escenarios teniendo aún más lógica en su aplicación que ponga en cola los identificadores de mensaje que se enviarán al servidor y lo elimine solo cuando el servidor responda correctamente.

Como ven, demasiado trabajo, del lado del servidor + del lado del cliente.
Además, es una degradación de rendimiento masivo en el lado del servidor cuando se trata de un buen volumen de usuarios, así como la reducción del rendimiento de su aplicación por un poquito.

1. Si pregunta por notificaciones que no se entregaron en un dispositivo que tiene una aplicación instalada en el dispositivo y solo porque la notificación expiró antes de que se entregue o por alguna otra razón, las notificaciones no se entregan.

Entonces la respuesta es

Nop.

No proporciona soporte en el que pueda verificar si las notificaciones caducaron y no se entregaron en un dispositivo válido:

¿Alguna opción para saber si la aplicación Apple recibe la notificación push?

Consulte la respuesta de Moshe en el enlace de arriba. Incluyo su respuesta aquí para que sea útil para todos en el futuro, incluso en caso de que el enlace se pierda.

La respuesta corta, no se puede, ya que APNS es de una sola manera. Sin embargo, dado que una aplicación puede ejecutar código arbitrario al recibir una notificación, puede usar esto para decir, enviar una solicitud http a su propio servidor cuando se reciba la notificación.

2. Si solicita las notificaciones no entregadas porque el usuario ha desinstalado la aplicación, puede consultar la respuesta de meda en esta publicación.

Espero que esto te ayude y avísame si tienes alguna pregunta sobre mi explicación.

El servicio de comentarios

El Servicio de notificaciones push de Apple incluye un servicio de comentarios para brindarle información sobre las notificaciones automáticas fallidas. Cuando no se puede enviar una notificación de inserción debido a que la aplicación deseada no existe en el dispositivo, el servicio de comentarios agrega el token de ese dispositivo a su lista. Las notificaciones push que caducan antes de ser entregadas no se consideran una entrega fallida y no afectan el servicio de comentarios. Al usar esta información para dejar de enviar notificaciones automáticas que no se entregarán, se reduce la sobrecarga de mensajes innecesarios y se mejora el rendimiento general del sistema.

Consulte el servicio de comentarios diariamente para obtener la lista de tokens de dispositivos. Use la marca de tiempo para verificar que los tokens del dispositivo no se hayan reinscrito desde que se generó la entrada de comentarios. Para cada dispositivo que no se ha vuelto a registrar, deje de enviar notificaciones. Las APN supervisan a los proveedores por su diligencia en la verificación del servicio de comentarios y se abstienen de enviar notificaciones automáticas a aplicaciones inexistentes en los dispositivos.

Puede obtener el informe de entrega de notificación Push, no desde el servidor sino desde su aplicación, usando “Extensión de servicio ” y modificando un poco en su Push json. Consulte este enlace para obtener una explicación detallada.