2012-02-14 8 views
9

Para detectar tokens no válidos, ¿con qué frecuencia debo consultar el servicio de comentarios?¿Con qué frecuencia se comprueba la retroalimentación de APNS?

Implementé un sistema de transmisión usando el servicio APNS. Abro una conexión, envío todos los mensajes APNS y desconecto. Luego abro una conexión de comentarios justo después de que finaliza la transmisión y leo cualquier token no válido.

Obtengo tokens no válidos en la conexión de retroalimentación. Sin embargo, a menudo mi transmisión solo tiene éxito parcial (algunos dispositivos reciben y otros no), y cuando elimino todos los tokens, excepto los conocidos, mis dispositivos de prueba reciben el mensaje constantemente.

Supongo que significa que Apple está deteniendo la transmisión después de recibir los primeros tokens inválidos.

Entonces, ¿no estoy escuchando correctamente los comentarios?

+2

Después de investigaciones adicionales, descubrí que después de enviar una señal ** ** individuales que Apple no le gustaban (el formato estaba bien, indistinguible de un token normal), me desconectaron. –

Respuesta

2

Debe verificar la respuesta de retroalimentación cada vez que envíe un push y elimine los dispositivos inactivos. Aunque, este no parece ser su problema en este momento.

Tu problema parece que tienes tokens no válidos en la base de datos. Apple soltará su conexión si envía no válido tokens. Enviar un token inactivo no tendrá ningún efecto, pero si envía un token malformado/inválido, Apple lo matará.

El otro problema podría ser un esquema de reintento perdido en su lado. ¿Implementaron alguna rutina que volverá a abrir la conexión con Apple si se cae mientras empuja? Tienes que predecir que la conexión puede fallar, y si lo hace, debes volver a subirla y comenzar a empujar nuevamente desde donde te detuviste.

Lo que se debe buscar es:

  • asegúrese de que sólo acciones símbolos válidos en su base de datos
  • Asegúrese de que tiene un esquema de reintento en lugar
  • Tome un vistazo a Notnoop, es una API de Java muy simple que maneja mucho para usted
+0

Gracias, todos los tokens parecen válidos, sin embargo. Todos eran de dispositivos Apple, con el mismo formato válido. Un esquema de reintento es imposible porque Apple no da retroalimentación sobre cuándo desconectaron mi socket. Debido a que puede llevar 100ms o más cerrar el socket, es posible que haya enviado cientos de notificaciones para entonces. –

3

Al final, la única manera de manejar este problema de forma adecuada era pasar al nuevo "formato de notificación mejorada" de Apple. Este formato le permite proporcionar una identificación a cada mensaje que envía, y cuando Apple lo desconecta, le envían el error y la identificación del mensaje que causó el error.

Esto permite que el cliente vuelva a intentar ya ha sido enviada correctamente los mensajes, y la caída de la señal de que no era válida

Cuestiones relacionadas