11

Ho già chiesto domanda relativa: any option to know if apple app get the push notification?Come fa WhatsApp a sapere se l'utente riceve la notifica push anche se l'app è in esecuzione in background e non è aperta?

e ho ottenuto una risposta che non è possibile sapere se la notifica arriva il momento l'iPhone quando l'applicazione è in background e l'utente non averlo aperto ..

Ma ho trovato qualcosa di interessante: Prendo 2 iPhone con WhatsApp. Apro, nel primo iPhone, WhatsApp e esco (il Whatsapp è in background ora), quindi con il secondo iPhone, invio il massaggio WhatsApp al primo iPhone.

Quando la notifica push di WhatsApp raggiunge il primo iPhone, posso vedere due "V" (simboli) vicino al messaggio (e non apro la notifica Push). Successivamente, chiudo Internet & 3G nel primo iPhone e invio di nuovo il messaggio WhatsApp con il secondo iPhone al primo. - e posso vedere solo una "V" vicino al massaggio (non leggere - non ricevere notifiche push).

Ora dopo aver riattivato Internet sul primo iPhone e dopo aver ricevuto la notifica push, posso vedere due "V" (di nuovo - non apro la notifica push).

Come funziona? Come fa WhatsApp a sapere se l'iPhone riceve la notifica push o no mentre WhatsApp funziona in background?

+0

Sto affrontando lo stesso problema, per favore fatemi sapere se avete qualche soluzione. – Sonu

risposta

6

Chiamiamo l'iPhone con l'applicazione WhatsApp chiuso - il ricevitore e l'altro iPhone si inviano messaggi con - il mittente, e di farci uso generico termine applicazione invece di WhatsApp

L'applicazione il mittente non è in grado di apprendere che la notifica push ha raggiunto il destinatario. È dalla natura delle notifiche push.

Tuttavia, il mittente è possibile inviare un altro - non una notifica push, ma il protocollo prioprietary - messaggio all'applicazione al ricevitore cui (il ricevitore) è invitato a riconoscere al mittente in qualsiasi modo specifico per l'applicazione che desidera.

Quindi, direi (non so - Io non sono affiliati con WhatsApp in ogni caso) che l'icona doppio v che si ottiene è quando il messaggio domanda sia pervenuta alla domanda presso l'ricevente - e non ha nulla fare con notifica push.

+0

ma il ricevitore non è aperto, è sullo sfondo .... l'app non può eseguire codice sullo sfondo .... o ho torto? – user1273189

+2

@ user1273189 è [possibile in qualche misura] (http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072 -CH4-SW20) – Krizz

2

Quello che intendo è solo le basi di push-tecnologia:

software

Il WhatsApp viene eseguito in background in ascolto su una porta specifica per i messaggi in arrivo. Lo fa continuamente.

BTW:

uno V = messaggio consegnato dal cellulare al server di WhatsApp

Due = messaggio di V spinto dal server di WhatsApp al destinatario cellulare

blu del V indicano messaggio è stato letto

+1

Atleast on blackberries (e andreoid telefoni se ricordo male, single v significa consegnato al destinatario, e double v significa che il msg è stato letto. –

+0

ulteriori chiarimenti, come posso farlo? –

1

Whatsapp non mostra se la persona legge il messaggio oppure no. Si informa solo quando il messaggio è stato inviato ai server whatsapp (una V) e quando è stato inviato il telefono personale (2 V). Il doppio non significa che il messaggio è stato letto significa solo che Whatsapp è connesso al telefono ed è stato in grado di trasmettere il messaggio.

0

I poster sopra riportati sono tutti corretti. Solo per aggiungere un'altra cosa. Se Whatsapp è stato chiuso di recente, è ancora in esecuzione in background e può ancora ricevere il messaggio (quindi la ricevuta di ritorno). Tuttavia, dopo che l'app è stata lasciata inutilizzata per un po '(o altre app hanno priorità più alta) Whatsapp è terminato, quindi non riceverà più messaggi in arrivo e non restituirà la ricevuta.

Ovviamente la persona osservante noterebbe un piccolo ritardo tra l'apertura dell'app e la visualizzazione dei nuovi messaggi che sembra suggerire che i messaggi non vengano scaricati in background ma solo scaricati all'apertura dell'app. Quindi, perché restituisce la ricevuta mentre è in esecuzione in background?

1

Dopo aver ricevuto una notifica push, il destinatario può scaricare i dati da un URL incluso nel carico utile della notifica push. Richiedendo tale URL il server sa che il destinatario ha ricevuto la notifica push e può passare questo stato all'applicazione del mittente.

Come così:

  1. Aggiungere un URL specifico nella vostra payload notifica push
  2. Implementare il application:didReceiveRemoteNotification:fetchCompletionHandler: method nella vostra applicazione delegato e in quel metodo chiamare l'URL dal carico utile.
  3. Implementare una logica sul server che riconosca la chiamata all'URL come notifica ricevuta
  4. Consentire all'applicazione del mittente di ottenere continuamente lo stato di notifica corrente dal server.
Problemi correlati