Format APNS-Stil JSON-Nachricht, die in Python zur Verwendung mit Amazon SNS
Ich bin erstellen einer iOS-app, und für unsere push-Benachrichtigungen, die wir verwenden Amazon Simple Notification Service (SNS).
SNS ist wunderbar, aber die Dokumentation ist ziemlich spärlich. Ich bin mit boto, Amazon Python-Bibliothek, und ich habe herausgefunden, wie zum senden von nur-text-push-Benachrichtigungen:
device_arn = 'MY ENDPOINT ARN GOES HERE'
plain_text_message = 'a plaintext message'
sns.publish(message=plain_text_message,target_arn=device_arn)
Jedoch, was nicht klar aus der Dokumentation ist wie ein ein Apple Push Notification Service (APNS) - Nachricht. Ich muss senden Sie eine sound-und eine Plakette, die zusammen mit der push-Benachrichtigung, aber kann nicht herausfinden, wie format der JSON für die Nachricht.
Hier ist meine beste Vermutung bisher:
message = {'default':'default message', 'message':{'APNS_SANDBOX':{'aps':{'alert':'inner message','sound':'mySound.caf'}}}}
messageJSON = json.dumps(message,ensure_ascii=False)
sns.publish(message=messageJSON,target_arn=device_arn,message_structure='json')
Wenn ich diesen code ausführen, obwohl, ich sehe auf die Meldung "Standard-Nachricht" - was bedeutet, dass Amazon SNS abgelehnt meine message format angezeigt und die default
statt.
Wie kann ich dieses format JSON korrekt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es herausgefunden!
Stellt sich heraus, das APNS-payload codiert werden als eine Zeichenfolge in den größeren payload - Total und er funktioniert.
Hier ist die Finale, funktionierende code:
Hier ist ein walkthrough von dem, was passiert in diesem code:
Erstellen Sie zuerst das python-dictionary für APNS:
Zweiten, nehmen Sie das Wörterbuch, und machen es zu einem JSON-formatierten string:
Dritten, setzen Sie die Zeichenfolge in das größere Nutzlast:
Weiter, wir Kodieren , dass in seiner eigenen JSON-formatierten string:
Die resultierende Zeichenfolge kann anschließend veröffentlicht werden mithilfe von boto:
Wenn ich die SNS veröffentlichen-tool generiert automatisch JSON sieht wie folgt aus:
Sieht näher an die spec Sprach über die von apple in Ihren "Benachrichtigung Nutzlast" Abschnitt. Wo Sie sagen, dass die Botschaft soll sein
Haben Sie versucht, die Bereitstellung einer Botschaft näher zu, dass Spezifikation? So etwas wie dieses zum Beispiel:
Oder nach dem Beispiel aus dem veröffentlichen SNS veröffentlichen tool:
Vielleicht auch mit Ihren backslash escapen.