Wie behebe ich die „DeviceTokenNotForTopic“-Fehler, wenn ich APN-Push-Benachrichtigungen über Amazon SNS oder Amazon Pinpoint veröffentliche?

Lesedauer: 4 Minute
0

Die mobilen Push-Benachrichtigungen meines Apple Push Notification Service (APNs) können nicht über Amazon Simple Notification Service (Amazon SNS) oder Amazon Pinpoint gesendet werden. Wenn die Push-Benachrichtigungen fehlschlagen, geben APNs einen 400/410-Statuscode mit einer „DeviceTokenNotForTopic“-Fehlermeldung zurück. Warum erhalte ich diese Fehlermeldung und wie behebe ich sie?

Kurzbeschreibung

Beim Erstellen einer Amazon-SNS-Plattformanwendung oder beim Konfigurieren eines Amazon-Pinpoint-APNs-Kanals ist ein Zertifikat/Token erforderlich, das mit einer bestimmten Bundle-ID verknüpft ist. Ihre Anwendung generiert ein Geräte-Token mit dieser Bundle-ID. Beim Senden einer Nachricht an einen Geräteendpunkt erwarten die APNs dieselbe Bundle-ID für dieses Geräte-Token.

Wenn das APN ein Geräte-Token mit einer anderen Bundle-ID aufnimmt, gibt es einen 400/410-Statuscode und den folgenden Fehler zurück: „DeviceTokenNotForTopic“. Wenn dieser Fehler auftritt, deaktivieren APNs den zugehörigen Plattformendpunkt und zeigen den Status „Deaktiviert“ für diesen Endpunkt in SNS an.

Weitere Informationen finden Sie unter Übersicht über den Benutzerbenachrichtigungsprozess und Apple-Authentifizierungsmethoden im Amazon-SNS-Entwicklerhandbuch. Beachten Sie außerdem Handling Notification Responses from APNs (Behandeln von Antworten auf Benachrichtigungen von APNs) auf der Apple-Developer-Website.

Hinweis: Sie können Ereignisbenachrichtigungen für mobile Apps einrichten, wenn bestimmte Anwendungsereignisse eintreten, damit Sie programmgesteuert auf dieses Ereignis reagieren können. Sie können beispielsweise eine Ereignisbenachrichtigung einrichten, wenn ein Plattformendpunkt deaktiviert ist.

Lösung

**Hinweis:**Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die aktuelle AWS-CLI-Version verwenden.

Beheben Sie den Fehler bei der Verwendung von Amazon SNS oder Amazon Pinpoint zum Senden von Push-Benachrichtigungen an APNs wie folgt:

1.    Prüfen Sie zunächst die bei APNs registrierte Bundle-ID für Ihre Anwendung.

2.    Aktualisieren Sie die Bundle-ID der Anwendung so, dass sie mit der bei APNs registrierten Bundle-ID übereinstimmt, und generieren Sie ein neues Geräte-Token.

3.    Aktualisieren Sie dann den Plattformendpunkt mit dem neu generierten Geräte-Token.

Prüfen der bei APNs registrierten Bundle-ID für Ihre Anwendung

Zertifikatbasierte Authentifizierung

1.    Melden Sie sich bei Ihrem Apple-Developer-Konto an.

2.    Wählen Sie in der linken Navigationsleiste Zertifikate, IDs und Profile aus.

3.    Wählen Sie in der linken Navigationsleiste Identifiers (Kennungen) aus.

4.    Wählen Sie Ihre Anwendung aus.

Hinweis: Um zu überprüfen, ob Ihre Anwendung mit einem Zertifikat verknüpft ist, navigieren Sie zu Certificates (Zertifikate) und zeigen Sie dann die Bundle-ID unter Name an.

5.    Kopieren Sie die Bundle-ID, die sich im Feld Name befindet. Dies ist die Bundle-ID, die bei APNs für Ihre Anwendung registriert ist.

Tokenbasierte Authentifizierung

Für die tokenbasierte Authentifizierung können Sie mehrere Bundle-IDs (Anwendungen) einem einzigen Token zuordnen. Um zu überprüfen, ob Sie die richtige Bundle-ID verwenden, überprüfen Sie sie entweder in Ihrem Apple-Developer-Konto oder in Ihrer SNS-Konsole.

1.    Melden Sie sich bei Ihrem Apple-Developer-Konto an.

2.    Wählen Sie in der linken Navigationsleiste Zertifikate, IDs und Profile aus.

3.    Wählen Sie in der linken Navigationsleiste Identifiers aus. Dann App-IDs.

4.    Wählen Sie Ihre Anwendung aus.

5.    Kopieren Sie die Bundle-ID, die sich im Feld Name befindet. Dies ist die Bundle-ID, die bei APNs für Ihre Anwendung registriert ist.

6.    Melden Sie sich bei Ihrer SNS-Konsole an.

7.    Navigieren Sie unter „Mobile“ (Mobil) zu Push Notification (Push-Benachrichtigung).

8.    Wählen Sie Ihre Plattformanwendung.

9.    Stellen Sie sicher, dass die Apple-Bundle-ID die richtige Bundle-ID ist.

Aktualisieren Sie die Bundle-ID der Anwendung wie folgt, sodass sie mit der bei APNs registrierten Bundle-ID übereinstimmt:

1.    Laden Sie Xcode herunter, falls Sie dies noch nicht getan haben.

2.    Öffnen Sie Xcode.

3.    Wählen Sie den Stammprojektordner Ihrer Anwendung.

4.    Wählen Sie Signieren und Funktionen.

5.    Geben Sie im Textfeld Bundle-ID die Bundle-ID ein, die bei APNs für Ihre Anwendung registriert ist. Die neue Bundle-ID wird automatisch gespeichert.

6.    Führen Sie Ihre Anwendung aus, um ein neues Geräte-Token mit der richtigen Bundle-ID zu generieren.

Endpunkt der Plattform aktualisieren

Für Amazon SNS

1.    Führen Sie den AWS-CLI-Befehl set-endpoint-attributes aus.

2.    Ändern Sie das Attribut Enabled (Aktiviert) in true. Geben Sie dann unter Token das neu generierte Geräte-Token an.

Für Amazon Pinpoint

1.    Führen Sie den AWS-CLI-Befehl update-endpoint aus.

2.    Geben Sie für das Attribut Address (Adresse) das neu generierte Geräte-Token an.

Weitere Informationen finden Sie unter Erstellen eines Plattformendpunkts im Amazon-SNS-Entwicklerhandbuch und Adding endpoints to Amazon Pinpoint (Hinzufügen von Endpunkten zu Amazon Pinpoint).


Relevante Informationen

Fehler Mobile-Push-API

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren