ios - objective - Cómo saber el estado de entrega de notificaciones push
push notifications swift4 (4)
Estoy utilizando la notificación de inserción 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 servidor qué mensaje recibe la aplicación y cuál no?
No, las notificaciones push son de fuego y olvido.
Apple no te dirá lo siguiente:
- No dirá si el mensaje fue enviado con éxito o no
- No dirá si el usuario ha optado por no recibir notificaciones automáticas.
- 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 se recibió el mensaje.
Si no se recibió dentro de un intervalo de tiempo particular, entonces puede reenviarlo.
Pero como puede ver, esto podría conducir a un posible escenario de inundar a un usuario inocente con las mismas notificaciones push.
En cierto sentido, acosarlo para que toque tu estúpida notificación de empuje, lo que a su vez puede llevarlo a desactivar las notificaciones de empuje para tu aplicación por completo, pero en su mayoría eliminará la aplicación y tal vez incluso le dará una calificación baja.
Te sirve bien, lo diré.
De todos modos, si continúa con esto, necesitaría implementar un patrón de identificación donde inserte un message identifier
único en la carga útil de la notificación de inserción y cuando su aplicación reciba esta notificación de inserción, deberá enviar este message identifier
al servidor. .
Luego, su servidor debe registrar que un token de dispositivo en particular devolvió un message identifier
, lo que significa que recibió esa notificación de inserción particular.
Su servidor puede verificar cada hora / día / lo que sea y reenviar un mensaje en particular a los tokens de dispositivos que no han informado con el message identifier
relativo.
De nuevo, esto significa que su servidor puede necesitar trabajar OT a veces.
Hay otros problemas con todo este enfoque:
- El usuario recibió una notificación de inserción, pero la descarta en lugar de abrir su aplicación con ella
- Su servidor asumirá que el usuario no vio la notificación de inserción y la enviará de nuevo
- Fichas de dispositivo fantasma
- El usuario aceptó las notificaciones push al principio, pero luego revocó este privilegio
- Usuario desinstala la aplicación
- Básicamente, tokens de dispositivos que una vez se usan para recibir notificaciones automáticas pero ya no lo hacen, probablemente debido a su reputación de inundación de mensajes
- El usuario recibió una notificación de inserción, pero la toca más tarde
- podría recibir la misma notificación de inserción varias veces ( muy irritante )
- El usuario recibió una notificación de inserción pero la toca cuando no hay conectividad a Internet
- El usuario recibió una notificación de inserción, pero su servidor está inactivo, posiblemente frito / m /
Puede sortear los últimos 3 escenarios al tener aún más lógica en su aplicación que pone en cola los identificadores de mensajes que se enviarán al servidor y los elimina solo cuando el servidor responde correctamente.
Así que ya ves, mucho trabajo, servidor + lado cliente.
Además, es un degradador de rendimiento masivo en el lado del servidor cuando se trata de un buen volumen de usuarios, además de reducir el rendimiento de su aplicación en un momento.
Puede obtener el informe de entrega de la notificación Push, no del servidor, sino de su aplicación, usando "Service Extension " y modificando un poco su Push json. Echa un vistazo a este enlace para una explicación detallada.
1. Si está preguntando por notificaciones que no se entregaron en un dispositivo que tiene la aplicación instalada en el dispositivo y solo por el vencimiento de la notificación antes de que se entregue u otra cosa, las notificaciones no se entregan.
Entonces la respuesta es
No
No proporciona asistencia en la que puede verificar si las Notificaciones caducaron y no se entregaron en un dispositivo válido:
¿Alguna opción para saber si la aplicación de Apple recibe la notificación de inserción?
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 quede muerto.
La respuesta corta, no se puede, ya que APNS es una forma. Sin embargo, dado que una aplicación puede ejecutar un código arbitrario al recibir una notificación, puede usar esto para decir, envíe una solicitud http a su propio servidor cuando se reciba la notificación.
2. Si solicita las notificaciones que no se enviaron porque el usuario ha desinstalado la aplicación, puede consultar la respuesta de meda en esta publicación.
Espero que esto le ayude y hágame saber si tiene alguna pregunta con respecto a mi explicación.
El Servicio de notificaciones push de Apple incluye un servicio de comentarios para brindarle información sobre las notificaciones push fallidas. Cuando no se puede entregar una notificación de inserción porque 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 utilizar esta información para detener el envío de notificaciones automáticas que no se entregarán, reducirá la sobrecarga de mensajes innecesarios y mejorará el rendimiento general del sistema.
Consulte el servicio de comentarios diariamente para obtener la lista de tokens del dispositivo. Use la marca de tiempo para verificar que los tokens del dispositivo no se hayan vuelto a registrar desde que se generó la entrada de comentarios. Para cada dispositivo que no haya sido registrado nuevamente, deje de enviar notificaciones. APNs monitorea a los proveedores por su diligencia en verificar el servicio de comentarios y abstenerse de enviar notificaciones push a aplicaciones inexistentes en dispositivos.