2012-06-30 12 views
22

Sto creando un'app di chat per iPhone, ma non sono sicuro di come i messaggi di conversazione debbano venire immediatamente.Chat iOS APN, socket o intervallo di tempo

Ho letto tonnellate di risultati di Google su questo argomento. Anche una volta il:
-http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server
- http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

APNS approccio:
Una notifica invisibile saranno spinti per l'iPhone che indica che un nuovo messaggio è pronto per essere letto. Quindi l'app farà una richiesta per i messaggi non letti. Quindi, invece di interrogare manualmente i nuovi messaggi, lascerò che l'APNS aiuti in questo. Ma non sono sicuro? approccio

Sockets:
Effettuare una connessione socket che è aperto per condividere i dati. Quando vengono trovati nuovi messaggi in db, invierà automaticamente i dati all'app. Ma per quanto riguarda gamma IP, firewall, consumo di energia, altre cose? ancora una volta non sono sicuro :(

approccio Polling:
Fai un intervallo di tempo in cui ho Poll richiesta, il consumo di energia è il mio nemico qui

La mia domanda:.
- Quale approccio è ? meglio
-? Altri suggerimenti
-. ho davvero bisogno di alcuni svantaggi e vantaggi da parte di persone con esperienza su questo argomento

Esempi è un sempre bene
Grazie

+2

Polling offre affidabilità, un migliore controllo del timeout e del ritardo e, in più, sarai libero di scegliere come presentare i tuoi dati. Con le notifiche push, non hai garanzie che il tuo messaggio sia stato consegnato correttamente. Apple non lo garantisce. Pertanto, non fare affidamento su Apple per fornire messaggi di chat ai miei utenti. – jweyrich

+2

Penso che tu abbia frainteso la domanda. APNS non dovrebbe inviare i messaggi della chat, dovrebbe solo ... "colpire"/"invocare" l'app che alcuni nuovi messaggi non letti sono pronti per essere letti. –

+0

Cosa non sei sicuro del metodo APNS? Le notifiche push non richiedono l'esecuzione in background, che è una grande vittoria perché un'applicazione in stato sospeso consente di risparmiare batteria. – jweyrich

risposta

6

Penso che la vostra preoccupazione principale sia come ricevere nuovi messaggi mentre l'applicazione è in background. Perché non è che avrò un'app di messaggistica aperta tutto il giorno quando posso ricevere notifiche con app come WhatsApp.

Meglio dei socket TCPIP è possibile utilizzare websockets. Poiché è HTTP non ci sono problemi con il firewall, MA richiede una connessione permanente con l'applicazione in primo piano che scarica la batteria.

E poiché solo la musica, l'ubicazione o l'ip vocale possono essere eseguiti sullo sfondo, non è possibile eseguire il polling a meno che l'applicazione non sia aperta. Nota che se ti registri per quelle attività in background e fai qualcos'altro, Apple noterà e rifiuterà la tua app.

Pertanto, utilizzare APNS. Questo è ciò che fa WhatsApp.

+0

Buoni punti. Anche se rimango con APNS, credo ancora che il futuro sia in qualche modo .. connessioni persistenti (prese o altro) - dove non è necessario aggiornare manualmente. Grazie per l'esempio di WhatsApp. –

+0

Sono solo molto preoccupato per la parte in primo piano. Considero la tua risposta che WhatsApp fa affidamento esclusivamente sulle notifiche push per sapere che deve inserire nuovi messaggi, anche quando è in esecuzione l'app in primo piano? – figha

Problemi correlati