2012-06-30 2 views
22

Ich mache eine Chat-App für das iPhone, aber ich bin nicht sicher, wie Konversationsnachrichten sofort kommen sollten.iOS-Chat APNS, Sockets oder Zeitintervall

Ich habe Tonnen von Google Ergebnissen zu diesem Thema lesen. die einmal auch:
-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 Ansatz:
Eine unsichtbare Benachrichtigung wird auf das iPhone geschoben werden darauf hinweist, dass eine neue Nachricht bereit ist, gelesen zu werden. Die App wird also nach ungelesenen Nachrichten fragen. Anstatt also neue Nachrichten manuell abzufragen, lasse ich APNS dabei helfen. Aber ich bin mir nicht sicher?

Sockets Ansatz:
eine Socket-Verbindung zu machen, die offen ist, Daten zu teilen. Wenn neue Nachrichten in db gefunden werden, werden die Daten automatisch an die App gesendet. Aber was ist mit IP-Reichweite, Firewall, Stromverbrauch, andere Dinge? wieder bin ich nicht sicher :(

Polling-Ansatz:
ein Zeitintervall Stellen, wo ich Anfrage abfragen, Stromverbrauch hier ist mein Feind

Meine Frage:.
- Welcher Ansatz ist ? best
- Andere Vorschläge
-. ich einige Nachteile und Profis von Menschen mit Erfahrung zu diesem Thema wirklich brauche

Beispiele sind ein Immer gut.
Dank

+2

Polling gibt Ihnen Zuverlässigkeit, bessere Verzögerung und Timeout-Steuerung, und als ein Plus, werden Sie frei sein zu wählen, wie Sie Ihre Daten zu präsentieren. Mit Push-Benachrichtigungen haben Sie keine Garantie, dass Ihre Nachricht erfolgreich zugestellt wurde. Apple garantiert dies nicht. Daher würde ich mich nicht darauf verlassen, dass Apple Chatnachrichten an meine Benutzer sendet. – jweyrich

+2

Ich denke, du hast die Frage missverstanden. APNS sollte die Chat-Nachrichten nicht selbst senden, es sollte nur ... die App "stupsen"/"aufrufen", dass einige neue ungelesene Nachrichten zum Lesen bereit sind. –

+0

Was sind Sie bei der APNS-Methode nicht sicher? Push-Benachrichtigungen erfordern keine Hintergrundausführung, was ein großer Gewinn ist, da eine Anwendung im gesperrten Zustand Batterie spart. – jweyrich

Antwort

6

Ich denke, Ihr Hauptanliegen ist es, wie neue Nachrichten zu empfangen, während der Anwendung im Hintergrund ist. Weil es nicht so ist, dass ich eine Messenger-App den ganzen Tag geöffnet habe, wenn ich Benachrichtigungen mit Apps wie WhatsApp bekomme.

Besser als TCPIP Sockets Sie websockets nutzen könnten. Da es sich um HTTP handelt, gibt es keine Firewall-Probleme, ABER das erfordert eine permanente Verbindung mit der Anwendung im Vordergrund, die den Akku entlädt.

Und weil nur Musik, Standort oder ihre Stimme ip ist, erlaubt auf dem Hintergrund ausgeführt werden, können Sie nicht, wenn die Anwendung geöffnet ist, abfragen kann. Wenn Sie sich für diese Hintergrundaufgaben registrieren und etwas anderes tun, wird Apple Ihre App bemerken und ablehnen.

APNS Daher verwenden. Das macht WhatsApp.

+0

Gute Punkte. Selbst wenn ich bei APNS bleibe, glaube ich immer noch, dass die Zukunft irgendwie in persistenten Verbindungen (Sockets oder anderen Dingen) liegt - wo man nicht manuell auffrischen muss. Danke für das Beispiel von WhatsApp. –

+0

Ich bin nur wirklich besorgt über den Vordergrund Teil. Nehme ich an Ihrer Antwort, dass WhatsApp nur auf Push-Benachrichtigungen angewiesen ist, um zu wissen, dass es neue Nachrichten ziehen muss, selbst wenn die App im Vordergrund läuft? – figha