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

Letzte Aktualisierung: 14.02.2022

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, gibt APNs einen 400-Statuscode mit einer „DeviceTokenNotForTopic“-Fehlermeldung zurück. Warum erhalte ich diese Fehlermeldung und wie behebe ich sie?

Kurzbeschreibung

Wenn APNs die Bundle-ID (Thema/Anwendung), die mit einem Zertifikat verknüpft ist, nicht erkennen, gibt APNs einen 400-Statuscode und den folgenden Fehler zurück: „DeviceTokenNotForTopic“.

Wenn dieser Fehler auftritt, deaktivieren APNs auch den zugehörigen Plattformendpunkt.

Das Problem wird durch eine falsche APNs-Bundle-ID im Kopfzeilenfeld der POST-API-Anforderung der Push-Benachrichtigung verursacht.

Um den Fehler bei der Verwendung von Amazon SNS oder Amazon Pinpoint zum Senden von Push-Benachrichtigungen an APNs zu beheben, aktivieren Sie zunächst den deaktivierten Plattformendpunkt. Überprüfen Sie dann die Bundle-ID, die bei APNs für Ihre Anwendung registriert ist, und führen Sie je nach Anwendungsfall einen der folgenden Schritte aus:

  • Aktualisieren Sie die Bundle-ID der Anwendung, sodass sie mit der Bundle-ID übereinstimmt, die bei APNs registriert ist.

-oder-

  • Überschreiben Sie die Bundle-ID, die Amazon SNS oder Amazon Pinpoint im Kopfzeilenfeld der POST-API-Anforderung der Push-Benachrichtigung verwenden.

Weitere Informationen finden Sie unter Überblick über den Benutzerbenachrichtigungsprozess und die Apple-Authentifizierungsmethoden im Amazon SNS Developer Guide. Behandeln Sie außerdem die Antworten auf Benachrichtigungen von APNs auf der Apple Developer-Website.

Hinweis: Sie können Ereignisbenachrichtigungen für mobile Apps einrichten, wenn bestimmte Anwendungsereignisse eintreten, sodass Sie für dieses Ereignis programmatische Maßnahmen ergreifen können. Zum Beispiel, wenn ein Plattform-Endpunkt deaktiviert wird.

Auflösung

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

Aktivieren Sie den deaktivierten Plattformendpunkt

Für Amazon SNS

Führen Sie den AWS CLI-Befehl set-platform-application-attributes aus.

Für Amazon Pinpoint

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

Weitere Informationen finden Sie unter Erstellen eines Plattformendpunkts im Amazon SNS Developer Guide und Hinzufügen von Endpunkten zu Amazon Pinpoint.

Prüfen Sie die bei APNs registrierte Bundle-ID für Ihre Anwendung

1.    Öffnen Sie Ihr Apple Developer-Konto.

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.

So aktualisieren Sie die Bundle-ID der Anwendung so, dass 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.

So überschreiben Sie die Bundle-ID, die Amazon SNS oder Amazon Pinpoint im Post-API-Anforderungskopfzeilenfeld der Push-Benachrichtigung verwenden

Für Amazon SNS

Geben Sie in der POST-API-Anforderung, die Amazon SNS an APNs sendet, einen benutzerdefinierten APNs-Kopfzeilenwert für das folgende reservierte Nachrichtenattribut an: AWS.SNS.MOBILE.APNS.TOPIC. Stellen Sie sicher, dass der benutzerdefinierte Kopfzeilenwert mit der Bundle-ID übereinstimmt, die bei APNs registriert ist.

Anweisungen und einen Beispielbefehl finden Sie unter Angeben von benutzerdefinierten APNs-Kopfzeilenwerten im Amazon SNS Developer Guide.

Für Amazon Pinpoint

Ändern Sie in der POST-API-Anforderung, die Amazon Pinpoint an APNs sendet, die ThreadID-Eigenschaft so, dass sie mit der Bundle-ID übereinstimmt, die bei APNs registriert ist.

Weitere Informationen finden Sie unter Nachrichten in der Amazon Pinpoint REST-API-Referenz und unter Senden von Nachrichten in der AWS CLI-Referenz.

Beispiel für den Amazon Pinpoint-Befehl zum Senden von Nachrichten, der eine Push-Benachrichtigung an einen bestimmten Endpunkt sendet

aws pinpoint send-messages --application-id 38d6b2282bdc4b46b2e24a14efe04914 --message-request file://pinpointapns.json

Beispiel für ein Amazon Pinpoint Post-API-Anforderungsschema für APN-Push-Benachrichtigungen, die die Bundle-ID einer Anwendung

Hinweis: Der ThreadID-Wert (Bundle-ID) in diesem Beispielschema ist „com.example.push“.

{   
 "Addresses": {
 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX": {  
 "ChannelType": "APNS_SANDBOX"  
 }     
 },       
 "MessageConfiguration": {  
 "APNSMessage": {
 "APNSPushType": "alert",
 "Body":"Sample Text for iOS Endpoints",  
 "ThreadId":"com.example.push" 
 }      
 }        
}

War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?