Notificaciones múltiples de Apple Push no visibles en la bandeja de notifications

Básicamente quiero hacer que varias notifications push en la misma aplicación sean visibles en la bandeja de notifications en iOS.

Este escenario funciona si mis datos están activados mientras que la notificación push se activa mediante APNS, pero solo se recibe la última si no estoy conectado y vuelvo después de un time. Esta funcionalidad es confirmada por la documentation de APNS.

Sin embargo, esto es lo que funcionó en WhatsApp:

  1. Conexión de datos desactivada
  2. Envió algunos posts a WhatsApp
  3. Conexión de datos activada
  4. Vio varias notifications push recibidas en la bandeja de notifications de Apple.

¿Cómo funciona este escenario? ¿Puedo usar APNS para esto? Si es así, ¿cómo?

Vea esta image de muestra de múltiples notifications push en WeChat.

Como escribiste en tu pregunta, esto se menciona en los Apple Docs:

Si está enviando múltiples notifications al mismo dispositivo o computadora dentro de un corto período de time, el service push enviará solo el último.

Enlazar

El único escenario en que lo que estás describiendo funcionará es si tu WhatsApp estaba abierto en segundo plano mientras recibías las push notifications . De esta forma, WhatsApp los manejará como local notifications y los presentará a todos en el centro de notifications. Si se cerró WhatsApp obtendrías solo la última notificación como cualquier otra aplicación.

Puedes probar esto fácilmente:

  1. Termina WhatsApp y activa el Airplane mode .
  2. Envíe su dispositivo 5 posts del 1 al 5.
  3. Desactiva el Airplane mode y bloquea tu dispositivo.
  4. Solo verá un msg (el último que envió alias "5") en su notifications center .

Así es como WhatsApp lo está haciendo funcionar:

Mientras que whatsApp está en segundo plano, se recibe una sola notificación de inserción (la última que el usuario envió, "5" en nuestro ejemplo). Ese msg no se mostrará al usuario.

whatsApp lo recibe en la application:didReceiveRemoteNotification:fetchCompletionHandler: método application:didReceiveRemoteNotification:fetchCompletionHandler: y verifica contra sus serveres si hay notifications anteriores a "5" que el usuario no recibió. Si ese es el caso, extraerán esos datos de sus serveres y los presentarán al usuario usando local notifications que son básicamente una forma de presentar datos y no relacionados con APNS en absoluto.

Se explica en Resolución de problemas de Notificaciones automáticas . Busque la sección "Algunas notifications recibidas, pero no todas".

Como se describe, no puede tener ningún control sobre esas notifications push.

Sin embargo, es posible que sepa que desde iOS7 un nuevo modo de ejecución en segundo plano ( notificación remota ) permite que el sistema despierte la aplicación cuando se recibe un impulso, lo que le permite procesar algunos datos y luego volver a dormir …

Este es probablemente el truco: usar esa manera para recibir notifications push (silenciosamente) y luego activar su propia notificación local en lugar de @Segev dijo. Vea los UIBackgroundModes aquí .