Voglio aggiungere notifiche push a un'applicazione di chat su cui sto lavorando.
Inizialmente pensavo di dover scrivere una logica di business per rilevare che un messaggio non era stato recapitato e quindi tentare di inviare la notifica per il messaggio non letto. Se viene rilevata la presenza online di un utente, posso saltare la chiamata di notifica push.
Tuttavia, dopo aver svolto alcune ricerche, ho scoperto questa risposta da un tecnico di supporto di PubNub.
La risposta afferma che a loro non importa se l'abbonamento è attivo, semplicemente inviano richieste GCM / APNS per tutti i messaggi.
The publisher does not know or care whether subscribers are active (foreground) or inactive (background or not running at all - kill state) on the device. Publisher always publishes the message with a GCM (and possibly APNS) payload.
Active apps will receive both and will prevent the display of the push notification via the OS's push msg receiver listener.
Inactive apps will receive only the push notification and display that. When end user taps the push msg, it will open the app where you can get the missed message and display the full content in your app's UI.
Se ho capito bene, questo mostrerebbe una notifica se l'app è in background e attiva un metodo ( didReceiveRemoteNotification
iOS, ??? Android) se l'app è aperta. Potrei quindi scegliere di visualizzare una notifica local
in base alla mia logica.
Questa buona progettazione o le applicazioni di chat in genere fanno più fatica a rilevare se un messaggio è stato consegnato prima di tornare alle notifiche push?