2013-05-08 7 views

Antwort

13

Ich würde Sie davon abraten, APNS als Rückgrat einer "Chat-App" zu verwenden.

Wenn Sie schnelle Chat-Funktionalität benötigen, sollten Sie Ihren eigenen TCP-Socket-basierten Server schreiben.

Wenn Synchronisierung alle paar Sekunden o.k. Sie können mit einem HTTP-basierten Server-Backend davonkommen (aber die gesamte Pull-Synchronisation kann den Netzwerkverkehr erschweren - daher ist TCP-Socket immer noch die bessere Wahl).

Sie jedoch APNS für Ausweich verwenden könnten - wenn Ihre Anwendung auf bestimmtes Gerät reagiert nicht (auf Server also nicht angeschlossen) Sie eine erste Nachricht APNS Trog senden können (App & aufwachen die Benutzer benachrichtigen es gibt eine Nachricht, die auf ihn wartet).

Sobald der Benutzer Ihre App öffnet, sollten Sie zu Ihrer TCP-Socket- oder HTTP-Anfrage-basierten Serverkommunikation zurückkehren.

Wie für Ihre Frage: Nein, Apple würde wahrscheinlich (man kann nie sicher wissen) nicht Ihre App nur wegen der Verwendung von APNS zum Chatten zurückweisen. Aber beachten Sie (wie die anderen bereits sagten): Nachrichten zwischen zwei Benutzern werden "verloren", wenn sie zu häufig interagieren würden - siehe den Link Roman Barzyczak gab Ihnen.

+1

Ich stimme eher nicht zu, obwohl es stimmt, dass die Lieferung nicht garantiert ist, gibt es einige erfolgreiche Apps, die Push-Benachrichtigungen für genau diesen Zweck verwenden. siehe hier http://blog.parse.com/2013/02/01/instadm-brings-private-messaging-to-instagram/ – Alex

13

"Wenn Sie innerhalb kurzer Zeit mehrere Benachrichtigungen an dasselbe Gerät oder denselben Computer senden, sendet der Push-Dienst nur den letzten."

weitere Informationen: http://developer.apple.com/library/ios/#technotes/tn2265/_index.html

aber Apple nicht Ihre Entwickler-Konto blockieren :)

+0

Ich habe meine App getestet. Beim Chatten fehlt mir eigentlich kein Text. Meine Verwirrung ist, wenn Tausende von Leuten gleichzeitig chatten werden, was dann passiert! dank dir und auch apple, dass sie mein Konto nicht blockieren ..:-) – sumon

+0

APNS ist keine gute Idee für Instant Messaging. Sehr gute Alternative ist z. websocket :) –

+0

Also, ich muss Socket-Programmierung implementieren und ich muss meinen eigenen Push-Server erstellen, oder? – sumon

6

Sie können sie für Messaging verwenden, aber Sie werden schnell herausfinden, dass es keine Garantie gibt, wird sie ankommen. Dies ist bekannt als das schwarze Loch der Push-Benachrichtigungen. ;-)

+0

:-( Also muss ich einen anderen Weg finden für Instant Messaging .. – sumon

+0

Push-Benachrichtigung sollte in der Regel eine Bonus-Funktion verwendet werden, anstatt eine vollständige Proof-Methode der Lieferung.Am besten wäre die Verwendung lokaler Benachrichtigungen.Abhängig Apps haben Grenzen für die Zeit, die sie mit Ausnahme geöffnet sein können von Apps, die Musik abspielen, Navigation, ständige periphere Unterstützung (Bluetooth) oder voip apps. https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPh oneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html # apple_ref/doc/uid/TP40007072-CH4-SW3 –

+1

Lokale Benachrichtigungen für eine Chat-App? Wie wird das funktionieren? Er sollte Push verwenden, um Benutzer zu benachrichtigen, dass eine neue Nachricht angekommen ist, aber das sollte es sein. Der Messaging-Dienst selbst sollte auf einem dedizierten Server leben. –

1

Ich mag diesen answer here.

Erster Versuch eine APNS einzige Lösung zu verwenden. Machen Sie Ihre Push-Benachrichtigungen statuslos (sie dienen nur als "Hey, Sie haben einige neue Sachen auf dem Server").
Wenn der Client eine Push-Benachrichtigung erhält, fragt er den Server nach neuen Daten (Nachrichten oder anderen Dingen).

Verwenden Sie OneSignal, um den Code zu vereinfachen, der Push-Benachrichtigungen sendet (vom Back-End). Wenn ein Benutzer in Ihrer App nach 10 Sekunden eine Nachricht erhält, ist es egal, ob Sie TCP, socket.io oder xmpp verwendet haben ...

Sogar WhatsApps Nachrichten können einige Sekunden dauern, um anzukommen.

Eine Chat-App ist kein Echtzeit-Spiel. Eine Verzögerung von einigen Sekunden ist für die Endbenutzer akzeptabel.

Verwandte Themen