2011-09-29 12 views
7

Ho implementato tutti i metodi raccomandati in AppDelegate per ottenere il servizio di Remote Notifications.Gestire le notifiche remote APNS mentre in Background

Posso accettarli mentre è in esecuzione, mentre si avvia e mentre è spento.

Ma c'è un problema, dal momento che non posso lavorare con molte notifiche ricevute mentre sono in background. Posso lavorare solo con l'ultima notifica.

Cosa è il manuale consigliato per farlo? Come posso ricevere tutte le notifiche ricevute in background? È risolvibile solo tramite una chiamata manuale al mio fornitore di servizi (mittente di dati apns)?

+1

Se stai implementando correttamente APNS, la tua app non "maneggia" mai la notifica. iOS riceve tutte le notifiche e l'utente può utilizzare tali notifiche per aprire la tua app. Questo è tutto. –

+1

Il sistema di notifica non è destinato a essere utilizzato per inviare dati importanti tra il server e il dispositivo. Ha solo lo scopo di urtare il dispositivo in modo che possa contattare il server e scoprire cosa sta realmente accadendo. Oltre a non essere adatti a queste notifiche push, non sono abbastanza affidabili per fare qualcosa di importante. Se il carico del server è un problema per te, quindi aumentare il prezzo della tua app o qualcosa per coprirlo. Gli utenti saranno felici di pagare se la tua app è buona. –

risposta

6

Con tutti i progetti su cui ho lavorato non è stato possibile archiviare queste informazioni in locale se la notifica push è stata chiusa. In tutti questi casi abbiamo utilizzato un piccolo file sul server a cui l'app si collegava e che si riavvia quando è di nuovo attivo. C'era anche un posto nell'app dove l'utente poteva vedere tutte le loro notifiche che, di nuovo, erano memorizzate sul server per un rapido recupero.

Con il mio modo di comprendere le notifiche push da configurare, se la notifica viene ignorata il sistema lo scarta. Eseguirà tutto ciò che deve fare (ad esempio, aggiorna il numero del badge e riproduce il suono corretto) ma eventuali informazioni aggiuntive specifiche per tale notifica andranno perse.

+0

Grazie per la risposta. Quello che mi chiedo è che quando l'applicazione è in primo piano, la notifica push viene consegnata direttamente a AppDelegate. Ma quando eseguo un'attività lunga in background, mi piacerebbe ricevere anche queste notifiche. Pensi che sia possibile? –

+0

Non credo sia possibile. Da tutto ciò con cui ho lavorato, abbiamo sempre dovuto andare al server per ricevere notifiche "perse". Se la notifica è stata chiusa mentre l'app era in background, l'unica cosa da cambiare era il numero del badge. –

3

Non sicuro se questo aiuta, ma se vuoi solo sapere quante notifiche hai perso mentre eri in background. È possibile creare una variabile che contenga un numero di notifica e memorizzarla nell'app ogni volta che si gestisce la notifica. Quando esci dallo sfondo e ricevi una nuova notifica, puoi sottrarre il nuovo numero con il numero memorizzato per scoprire il numero di notifiche mancate. Non penso che esista un modo in cui iOS può fornirti dati completi associati a tutti i dispositivi di notifica ricevuti mentre l'app era in background.

+0

buon suggerimento, ma sto cercando il modo in cui memorizzarli localmente, perché è pesante sul server nella mia situazione per ottenere le notifiche dopo qualche id di notifica per ID token client ... –

+0

vuoi memorizzare le informazioni ricevute in push localmente quando l'app è in background? – Nilesh

+0

@Nilesh sì, mi piacerebbe memorizzare le notifiche ricevute, mentre la mia app è in esecuzione un'attività lunga in background. –

3

La soluzione migliore consiste nel mantenere un elenco di notifiche inviate con tutti i dati rilevanti sul server, in modo che l'app possa accedere a tali dati all'avvio. L'invio di più notifiche con dati che non sono memorizzati sul server può essere rischioso, perché l'applicazione riceve la notifica solo quando l'utente apre l'app da quella notifica, quindi se si tocca una notifica, l'app riceverà solo ogni uno.

Se li hai tutti in un elenco sul tuo server, l'app può semplicemente andare a tirare giù l'elenco e elaborarlo, assicurandosi che nessun dato venga perso.

Problemi correlati