Ich wollte nur mit einer Perspektive der ersten Person läuten, wie wir Millionen von APNS Meldungen täglich senden.
Die Referenz @Eran Zitate ist leider über die beste Ressource, die wir für wie Apple APNS-Sockets verwaltet hat. Es ist in Ordnung für geringe Lautstärke, aber die gesamte Dokumentation von Apple ist sehr schief gegenüber dem gelegentlichen Entwickler mit geringem Volumen. Wenn Sie skalieren, werden Sie viel undokumentiertes Verhalten feststellen.
Der Teil dieses Dokuments über die asynchrone Fehlererkennung ist entscheidend für einen hohen Durchsatz. Wenn Sie darauf bestehen, bei jedem Sendevorgang Fehler zu blockieren, müssen Sie Ihre Mitarbeiter stark parallelisieren, um den Durchsatz aufrechtzuerhalten. Der empfohlene Weg ist jedoch, senden Sie so schnell wie Sie senden können, und wann immer Sie tun und Fehler: Reparatur und Wiederholung.
Der Teil dieser Beitrag habe ich Ausnahme zu nehmen ist:
Device tokens should almost all be valid if you've captured them correctly and you're sending them to the correct environment. So it makes sense to optimize assuming failures will be rare.
, dass die Beratung Prädikat mit einem so großen „IF“ äußerst irreführend sein scheint. Ich kann fast garantieren, dass die meisten Entwickler keine Token erfassen und den Feedback-Service von Apple zu 100% "richtig" verarbeiten. Selbst wenn sie es waren, ist das System von Natur aus verlustreich, also wird es zu Abweichungen kommen.
Wir sehen eine Anzahl von Fehler # 8 Antworten (ungültiges Geräte-Token) ungleich null, die ich gerooteten Telefonen, Client-Fehlern oder Benutzern zuschreibe, die ihre Token absichtlich gefälscht haben. Wir haben in der Vergangenheit auch eine Anzahl von Fehler # 7 (ungültige Nutzlastgröße) gesehen, die wir auf falsch codierte Nachrichten aufgespürt haben, die ein Entwickler an unserem Ende hinzugefügt hat. Das war natürlich unsere Schuld, aber das ist mein Punkt - zu sagen, "Optimiere Annahme von Fehlern wird selten sein" ist die falsche Botschaft, die an Lernentwickler geschickt wird. Was würde ich sagen, stattdessen wäre:
Assume errors will happen.
Hope that they happen infrequently, but code defensively in case they don't.
Wenn Sie Fehler optimieren vorausgesetzt wird selten, können Sie Ihre Infrastruktur in Gefahr setzen, wenn der APNS Service geht und jede Nachricht, die Sie kehrt senden einen Fehler # 10.
Das Problem tritt auf, wenn Sie herausfinden möchten, wie Sie auf Fehler richtig reagieren. Die Dokumentation ist mehrdeutig oder fehlt hinsichtlich der korrekten Handhabung und Behebung verschiedener Fehler. Dies ist offensichtlich eine Übung für den Leser.
Haben Sie einen Weg gefunden, Bulk-Push-Benachrichtigungen für das iPhone zu senden? weil ich keine finde:/ –
Wenn du gerade anfängst, dann überlege dir, mit Urban Airship zu beginnen, was dir pro Monat ~ 1M kostenlose Pushs gibt, aber ansonsten wahnsinnig teuer ist. Wenn Sie mehr Volumen haben, können Sie den SNS-Dienst von Amazon verwenden (der um einige Größenordnungen günstiger ist als Urban Airship). – er0
, aber ich schicke meinen Push von frei, so muss es eine Möglichkeit geben Bulk Push auch kostenlos zu senden –