2011-09-29 19 views
7

Implementé todos los métodos recomendados en AppDelegate para obtener el servicio de notificaciones remotas en funcionamiento.Manejar las notificaciones remotas de APNS en el fondo

Puedo aceptarlos mientras se ejecutan, mientras se inician y mientras están apagados.

Pero hay un problema, ya que no puedo trabajar con muchas notificaciones recibidas mientras estaba en segundo plano. Puedo trabajar solo con la última notificación.

¿Qué manual se recomienda para hacer eso? ¿Cómo puedo obtener todas las notificaciones recibidas en segundo plano? ¿Solo se puede solucionar a través de una llamada manual a mi proveedor de servicios (datos del remitente de apns)?

+1

Si realmente implementa APNS correctamente, su aplicación nunca "maneja" la notificación. iOS recibe todas las notificaciones y el usuario puede usar esas notificaciones para abrir su aplicación. Eso es. –

+1

El sistema de notificación no está destinado a ser utilizado para enviar datos importantes entre el servidor y el dispositivo. Simplemente está destinado a topar el dispositivo para que pueda contactar al servidor y descubrir qué está sucediendo realmente. Además de no ser adecuado para este tipo de notificaciones, tampoco son lo suficientemente confiables como para hacer algo importante. Si la carga del servidor es un problema para ti, entonces aumenta el precio de tu aplicación o algo para cubrirla. Los usuarios estarán felices de pagar si su aplicación es buena. –

Respuesta

6

Con todos los proyectos en los que he trabajado, no ha habido una forma de almacenar localmente esta información si se descarta la notificación de inserción. En todos esos casos, usamos un pequeño archivo en el servidor al que la aplicación se conectaba y se activaba cuando se activaba nuevamente. También había un lugar en la aplicación donde el usuario podía ver todas sus notificaciones que, una vez más, se almacenaban en el servidor para su recuperación rápida.

Con la forma en que entiendo que las notificaciones automáticas se configurarán, si la notificación se descarta, el sistema la descarta. Realizará todo lo que se supone que debe hacer (como actualizar el número de la insignia y reproducir el sonido correcto), pero se perderá toda la información adicional específica de esa notificación.

+0

Gracias por responder. Lo que me pregunto es que cuando la aplicación está en primer plano, la notificación push se envía directamente a AppDelegate. Pero cuando estoy ejecutando una larga tarea en segundo plano, me gustaría recibir estas notificaciones también. ¿Crees que es posible? –

+0

No creo que sea posible. De todo lo que he trabajado siempre hemos tenido que ir al servidor para recibir notificaciones 'perdidas'. Si la notificación se rechazó mientras la aplicación estaba en segundo plano, lo único que cambió fue el número de la insignia. –

3

No estoy seguro si esto ayuda, pero si solo quiere saber cuántas notificaciones ha perdido mientras estaba en segundo plano. Puede crear una variable que contenga un número de notificación y almacenarla en la aplicación cada vez que maneja una notificación. Cuando sale de segundo plano y recibe una nueva notificación, puede restar el nuevo número con el número almacenado para averiguar el número de notificaciones perdidas. No creo que haya una forma en la que iOS pueda proporcionarle datos completos asociados con todo el dispositivo de notificación recibido mientras la aplicación estaba en segundo plano.

+0

buena sugerencia, pero estoy buscando la forma de cómo almacenarlos localmente, ya que es pesado en el servidor en mi situación para recibir notificaciones después de algunas notificaciones id para el identificador de testigo del cliente ... –

+0

¿desea almacenar la información recibida en push localmente cuando la aplicación está en segundo plano? – Nilesh

+0

@Nilesh Sí, me gustaría almacenar las notificaciones recibidas, mientras que mi aplicación ejecuta una larga tarea en segundo plano. –

3

La mejor solución es mantener una lista de notificaciones enviadas con todos los datos relevantes en su servidor, para que la aplicación pueda acceder a esa información cuando se lance. El envío de notificaciones múltiples con datos que no están almacenados en el servidor puede ser arriesgado, ya que la aplicación solo recibe la notificación cuando el usuario abre la aplicación desde esa notificación, por lo que si presionan una notificación, la aplicación recibirá cada uno.

Si los tiene todos en una lista en su servidor, la aplicación simplemente puede ir y extraer esa lista y procesarla, asegurándose de que no se pierda ningún dato.

Cuestiones relacionadas