Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Einrichtung eines Amazon SNS-Plattformendpunkts für mobile Benachrichtigungen
Wenn sich eine App und ein Mobilgerät bei einem Push-Benachrichtigungsdienst (wie APNs oder Firebase Cloud Messaging) registrieren, gibt der Push-Benachrichtigungsdienst ein Geräte-Token zurück. Amazon SNS verwendet dieses Geräte-Token, um einen Plattformendpunkt zu erstellen, der als Ziel für das Senden direkter Push-Benachrichtigungen an die App auf dem Gerät dient. Der Plattformendpunkt dient als Brücke und leitet Nachrichten, die von Amazon SNS gesendet werden, an den Push-Benachrichtigungsdienst zur Übermittlung an das entsprechende Mobilgerät weiter. Weitere Informationen erhalten Sie unter Voraussetzungen für Amazon SNS-Benutzerbenachrichtigungen und Einrichtung von Push-Benachrichtigungen mit Amazon SNS.
Grundlegendes zu Geräte-Token und Plattform-Endpunkten
Ein Geräte-Token identifiziert ein Mobilgerät, das bei einem Push-Benachrichtigungsdienst registriert ist (z. B. APNs, Firebase Cloud Messaging), eindeutig. Wenn sich eine App beim Push-Benachrichtigungsdienst registriert, generiert sie ein für diese App und dieses Gerät spezifisches Geräte-Token. Amazon SNS verwendet dieses Geräte-Token, um einen Plattformendpunkt in der entsprechenden Plattformanwendung zu erstellen.
Der Plattformendpunkt ermöglicht es Amazon SNS, Push-Benachrichtigungen über den Push-Benachrichtigungsservice an das Gerät zu senden, wodurch die Verbindung zwischen Ihrer App und dem Gerät des Benutzers aufrechterhalten wird.
Erstellen eines Plattformendpunkts
Um Push-Benachrichtigungen zu einer App per Amazon SNS zu senden, muss zuerst das Geräte-Token der App bei Amazon SNS registriert werden, indem die "create platform endpoint"-Aktion aufgerufen wird. Diese Aktion verwendet den Amazon Resource Name (ARN) der Plattformanwendung und das Geräte-Token als Parameter und gibt den ARN des erstellten Plattformendpunkts zurück.
Die CreatePlatformEndpoint Aktion bewirkt Folgendes:
-
Wenn der Plattformendpunkt bereits existiert, erstellen Sie ihn nicht erneut. Dem Aufrufer wird der ARN des vorhandenen Plattformendpunkts zurückgegeben.
-
Wenn der Plattformendpunkt mit demselben Geräte-Token, aber unterschiedlichen Einstellungen bereits existiert, erstellen Sie ihn nicht erneut. Es wird eine Ausnahme für den Aufrufer ausgelöst.
-
Wenn der Plattformendpunkt nicht existiert, erstellen Sie ihn. Dem Aufrufer wird der ARN des neu erstellten Plattformendpunkts zurückgegeben.
Sie sollten die Aktion nicht direkt bei jedem Start der Anwendung aufrufen. Sie sorgt nicht immer für die Bereitstellung eines funktionierenden Endpunkts. Dies kann zum Beispiel der Fall sein, wenn eine App auf einem Gerät deinstalliert und neu installiert wird und der Endpunkt für diese bereits vorhanden aber deaktiviert ist. Ein erfolgreicher Registrierungsprozess sollte folgendermaßen aussehen:
-
Stellen Sie sicher, dass ein Plattformendpunkt für diese Kombination aus App und Gerät vorhanden ist.
-
Stellen Sie sicher, dass das Geräte-Token im Plattformendpunkt das neueste gültige Geräte-Token ist.
-
Stellen Sie sicher, dass der Plattformendpunkt aktiviert und einsatzbereit ist.
Pseudo-Code
Der folgende Pseudo-Code beschreibt ein empfohlenes Verfahren für die Erstellung eines funktionierenden, aktuellen, aktivierten Plattformendpunkts in einer Vielzahl von Startbedingungen. Dieser Ansatz funktioniert, wenn die App zum ersten Mal oder erneut registriert wird. Es ist egal, ob der Plattformendpunkt für diese App bereits vorhanden ist, ob der Plattformendpunkt aktiviert ist, ob er das richtige Geräte-Token hat und so weiter. Der Code kann mehrfach hintereinander aufgerufen werden. Er wird keine doppelten Plattformendpunkte erstellen oder einen vorhandenen Plattformendpunkt ändern, der bereits auf dem neuesten Stand und aktiviert ist.
retrieve the latest device token from the mobile operating system if (the platform endpoint ARN is not stored) # this is a first-time registration call create platform endpoint store the returned platform endpoint ARN endif call get endpoint attributes on the platform endpoint ARN if (while getting the attributes a not-found exception is thrown) # the platform endpoint was deleted call create platform endpoint with the latest device token store the returned platform endpoint ARN else if (the device token in the endpoint does not match the latest one) or (GetEndpointAttributesshows the endpoint as disabled) call set endpoint attributes to set the latest device token and then enable the platform endpoint endif endif
Dieser Ansatz kann jederzeit verwendet werden, wenn die App sich registrieren oder erneut registrieren möchte. Er kann auch beim Benachrichtigen von Amazon SNS über eine Änderung des Geräte-Tokens verwendet werden. In diesem Fall können Sie einfach eine Aktion mit dem neuesten Geräte-Token-Wert aufrufen. Es gibt einige wichtige Punkte zu diesem Ansatz:
-
Es gibt zwei Fälle, in denen die „create platform endpoint“-Aktion aufgerufen werden kann. Sie kann direkt zu Beginn aufgerufen werden, wenn die App ihren eigenen Plattformendpunkt-ARN nicht kennt (z. B. während der Erstregistrierung). Es wird auch aufgerufen, wenn der erste
GetEndpointAttributesAktionsaufruf mit einer Not-Found-Ausnahme fehlschlägt, wie es der Fall wäre, wenn die Anwendung ihren Endpunkt-ARN kennt, dieser aber gelöscht wurde. -
Die
GetEndpointAttributesAktion wird aufgerufen, um den Status des Plattformendpunkts zu überprüfen, auch wenn der Plattformendpunkt gerade erstellt wurde. Dies geschieht, wenn der Plattformendpunkt bereits vorhanden, aber deaktiviert ist. In diesem Fall ist die „create platform endpoint“-Aktion erfolgreich, aber der Plattformendpunkt wird nicht aktiviert. Daher müssen Sie den Status des Plattformendpunkts vor der Rückgabe eines Erfolgs prüfen.
AWS SDK-Beispiel
Der folgende Code zeigt, wie der vorherige Pseudocode mithilfe der Amazon SNS-Clients implementiert wird, die von den AWS SDKs bereitgestellt werden.
Um ein AWS SDK verwenden zu können, müssen Sie es mit Ihren Anmeldeinformationen konfigurieren. Weitere Informationen finden Sie unter Freigegebene Konfigurations- und Anmeldeinformationsdateien im AWS -Referenzhandbuch zu SDKs und Tools.
Weitere Informationen finden Sie unter Mobile Push-API-Aktionen.
Fehlerbehebung
Wiederholtes Aufrufen von „Create Platform Endpoint“ mit einem veralteten Geräte-Token
Insbesondere bei FCM-Endpunkten denken Sie vielleicht, dass es am besten ist, das erste Geräte-Token, von dem die Anwendung ausgestellt wird, zu speichern und dann bei jedem Start der Anwendung den Create Platform Endpoint mit diesem Geräte-Token aufzurufen. Dies scheint sinnvoll, da die App sich nicht mehr um den Status des Geräte-Tokens kümmern muss und Amazon SNS das Geräte-Token automatisch auf den aktuellen Wert aktualisiert. Diese Lösung hat jedoch mehrere ernsthafte Probleme:
-
Amazon SNS stützt sich auf das Feedback von FCM, um abgelaufene Geräte-Tokens durch neue Geräte-Tokens zu aktualisieren. FCM erhält einige Zeit Informationen zu alten Geräte-Tokens. Dies gilt jedoch nicht unbegrenzt. Nachdem FCM die Verbindung zwischen dem alten Geräte-Token und dem neuen Geräte-Token vergessen hat, kann Amazon SNS das auf dem Plattformendpunkt gespeicherte Geräte-Token nicht mehr auf den richtigen Wert aktualisieren. Stattdessen wird lediglich der Plattformendpunkt deaktiviert.
-
Die Plattformanwendung enthält mehrere Plattformendpunkte mit demselben Geräte-Token.
-
Amazon SNS arbeitet mit einem Kontingent an Plattformendpunkten, die gleichzeitig mit demselben Geräte-Token gestartet werden können. Irgendwann wird die Erstellung neuer Endpunkte mit einer „Invalid Parameter“-Ausnahme und der Fehlermeldung „This endpoint is already registered with a different token.“ fehlschlagen.
Weitere Informationen zur Verwaltung von FCM-Endpunkten finden Sie unter. Amazon SNS-Verwaltung von Firebase Cloud Messaging-Endpunkten
Re-enabling ein Plattformendpunkt, der einem ungültigen Geräte-Token zugeordnet ist
Wenn eine mobile Plattform (z. B. APNs oder FCM) Amazon SNS darüber informiert, dass das in der Veröffentlichungsanforderung verwendete Geräte-Token ungültig ist, deaktiviert Amazon SNS den Plattformendpunkt für dieses Geräte-Token. Amazon SNS weist dann nachfolgende Veröffentlichungen für das Geräte-Token zurück. Möglicherweise glauben Sie, Sie könnten einfach den Plattformendpunkt neu aktivieren und so weiter veröffentlichen, doch wird dies in den meisten Fällen nicht funktionieren. Die veröffentlichten Nachrichten werden nicht zugestellt und der Plattformendpunkt wird bald wieder deaktiviert.
Der Grund hierfür ist, dass das Geräte-Token des Plattformendpunkts wirklich ungültig ist. Zustellungen können nicht abgeschlossen werden, da es nicht mehr mit einer installierten App übereinstimmt. Bei der nächsten Veröffentlichung informiert die mobile Plattform Amazon SNS erneut darüber, dass das Geräte-Token ungültig ist. Amazon SNS wird den Plattformendpunkt wieder deaktivieren.
Um einen deaktivierten Plattformendpunkt zu reaktivieren, muss dieser einem gültigen Geräte-Token zugeordnet (über einen „set endpoint attributes“-Aktionsaufruf) sein und dann aktiviert werden. Nur dann werden Zustellungen an den Plattformendpunkt erfolgreich sein. Das erneute Aktivieren eines Plattformendpunkts ohne Aktualisierung des Geräte-Tokens funktioniert nur, wenn ein dem Endpunkt zugeordnetes Geräte-Token ungültig ist und wieder gültig wird. Dies kann zum Beispiel der Fall sein, wenn eine App deinstalliert und dann auf demselben Mobilgerät neu installiert wurde und dasselbe Geräte-Token erhält. Der oben gezeigte Ansatz geht so vor. Er stellt sicher, dass der Plattformendpunkt erst dann neu aktiviert wird, wenn überprüft wurde, dass das ihm zugeordnete Geräte-Token im Moment verfügbar ist.