Pregunta

Veo un comportamiento muy extraño de los servidores de notificaciones push de Apple cuando el iPhone receptor está apagado. Aquí está mi escenario:

  

-Envía la notificación push A a Apple. En unos segundos, aparece una ventana emergente de notificación push como se esperaba en el iPhone.
  -Envíe una notificación en blanco a Apple para cancelar la anterior (la notificación anterior no tiene sentido después de unos 10 segundos, por eso quiero deshacerme de ella). No se muestra nada en el iPhone.
  -Apague completamente el iPhone (no está dormido, está apagado).
  -Envía la notificación push B a Apple. Espera 10 segundos.
  -Envía una notificación en blanco a Apple para cancelar la anterior. Espera 10 segundos.
  -Envía la notificación push C a Apple. Espera 10 segundos.
  -Envía una notificación en blanco a Apple para cancelar la anterior. Espera 30 segundos.
  -Encienda el iPhone.
  -Después de unos 60 segundos, se muestra una ventana emergente de notificación push para la notificación B en el iPhone.
  -La notificación C nunca parece llegar.

¡Esto es muy extraño! Al leer los documentos de Apple, esperaba que solo se enviara la última notificación push. ¡Esperaba que se enviara mi notificación en blanco, ciertamente no esperaba que se enviara la notificación push no enviada más antigua!

Los documentos de Apple dicen:

  

El servicio de notificaciones push de Apple incluye un componente de calidad de servicio (QoS) predeterminado que realiza una función de almacenar y reenviar. Si APNS intenta entregar una notificación pero el dispositivo está fuera de línea, QoS almacena la notificación. Solo retiene una notificación por aplicación en un dispositivo: la última notificación recibida de un proveedor para esa aplicación. Cuando el dispositivo fuera de línea se vuelve a conectar más tarde, la QoS reenvía la notificación almacenada al dispositivo. La QoS retiene una notificación por un período limitado antes de eliminarla.

¿Alguien ha visto este comportamiento? ¿Estoy golpeando algún tipo de error de ventana de tiempo? ¿Qué debería pasar?

Actualizaciones :
-Si apago el teléfono y espero de 5 a 15 minutos antes de enviar cualquier notificación push, entonces este problema no ocurre. En este caso, cuando enciendo el teléfono, no veo ninguna ventana emergente de notificación, aunque no estoy seguro de si esto es el resultado de que Apple haya caído la notificación o de que su 'cola' funcione correctamente (es decir, en su lugar tiene la notificación en blanco más reciente) del primero con la ventana emergente).
-Investigaré más a fondo poniendo un APNsLogging.mobileconfig en el iPhone para ver qué notificaciones recibió.
-Apagar wifi no parece cambiar los resultados.
-He planteado un informe de error con Apple para este escenario.

¿Fue útil?

Solución 2

Para el registro, planteé esto como ID de error # 7349660 con Apple el 29 de octubre ( https://bugreport.apple .com ), luego les dio los diagnósticos adicionales que querían el 30 de octubre.

No hubo respuesta de Apple desde entonces, por lo que estoy asumiendo que esto probablemente sea solo bajo en su lista de prioridades, lo cual es bastante justo ya que es una ventana de tiempo bastante pequeña donde puede ocurrir el problema (que no me di cuenta cuando abrió esta pregunta por primera vez).

Otros consejos

Es posible que desee verificar este comportamiento en las redes móviles y WiFi. Hay un comportamiento extraño cuando el teléfono está conectado a WiFi, especialmente si hay varios enrutadores NAT involucrados, es decir, en una gran corporación donde hay un enrutador principal y enrutadores WiFi por piso, o en un hogar donde tiene enrutadores múltiples Ampliar el alcance. Pero en celular ha sido bastante sólido.

Además, el retraso de cancelación de 10 segundos puede estar reduciéndolo demasiado. No garantizan una entrega oportuna y he tenido retrasos de hasta 3 minutos en el servidor de producción después de poner en cola una solicitud de inserción. Es posible que desee planificar la congestión del sistema.

De cualquier manera, parece que podría ser digno de un informe de informe de errores.

En el documento de Apple se dice que puede almacenar en caché la notificación de inserción hasta 30 días. Por lo tanto, puede recibir una notificación una vez que encienda su iPhone (siempre que tenga interconexión)

¿Qué tan pronto se envió C después de B? Parece que puede ser un error donde hay algún tipo de tiempo de espera del servidor, y accidentalmente mantienen B si C se envió demasiado pronto después ...

Si tiene un buen ejemplo de prueba (y esto parece una buena prueba), presentaría un informe de radar sobre esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top