Wie oft überprüfen Sie APNS Feedback?

9

Wie oft sollte ich den Feedback-Service überprüfen, um ungültige Tokens zu erkennen?

Ich habe ein Rundfunksystem mit dem APNS-Dienst implementiert. Ich öffne eine Verbindung, sende alle APNS-Nachrichten und trenne die Verbindung. Ich öffne dann direkt nach der Übertragung eine Feedback-Verbindung und lese alle ungültigen Tokens.

Ich bekomme ungültige Token in der Feedback-Verbindung. Jedoch wird meine Übertragung oft nur teilweise erfolgreich sein (einige Geräte empfangen und andere nicht), und wenn ich alle außer den bekannten guten Tokens entferne, erhalten meine Testgeräte die Nachricht konsistent.

Ich nehme an, dass Apple die Übertragung stoppt, nachdem es die ersten ungültigen Token empfangen hat.

Also höre ich das Feedback nicht richtig?

    
Justin Francis 14.02.2012, 15:02
quelle

2 Antworten

3

Letztendlich war die einzige Möglichkeit, dieses Problem zu lösen, die Umstellung auf das neuere "erweiterte Benachrichtigungsformat" von Apple. Mit diesem Format können Sie jeder gesendeten Nachricht eine ID zuweisen, und wenn Apple die Verbindung trennt, senden sie Ihnen den Fehler und die ID der Nachricht, die den Fehler verursacht hat.

Dies ermöglicht dem Client, bereits gesendete Nachrichten ordnungsgemäß zu wiederholen und das Token zu löschen, das ungültig war

    
Justin Francis 07.06.2012 19:42
quelle
2

Sie sollten die Rückmeldung jedes Mal überprüfen, wenn Sie einen Push senden und inaktive Geräte löschen. Obwohl dies momentan nicht wie Ihr Problem aussieht.

Ihr Problem sieht so aus, als hätten Sie einige ungültige Tokens in Ihrer Datenbank. Apple wird Ihre Verbindung trennen, wenn Sie ungültige Tokens senden. Das Senden eines inaktiven Token hat keine Auswirkungen, aber wenn Sie ein ungültiges Token senden, wird Apple Ihren Socket beenden.

Das andere Problem könnte ein fehlendes Wiederholungsschema auf Ihrer Seite sein. Haben Sie irgendeine Routine implementiert, die die Verbindung mit Apple wieder öffnet, wenn sie beim Drücken abfällt? Sie müssen vorhersagen, dass die Verbindung fehlschlagen kann, und wenn dies der Fall ist, müssen Sie sie erneut starten und von dort, wo Sie gestoppt haben, erneut drücken.

Was Sie suchen sollten, ist:

  • Stellen Sie sicher, dass Sie nur VALID-Token in Ihrer Datenbank
  • speichern
  • Stellen Sie sicher, dass ein Wiederholungsschema vorhanden ist
  • Schauen Sie sich Notnoop an, es ist eine sehr einfache Java-API, die viel für Sie erledigt
pgratton 17.02.2012 22:25
quelle

Tags und Links