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

Letzte Aktualisierung: 17.08.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, 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 Überblick über den Benutzerbenachrichtigungsprozess und Apple-Authentifizierungsmethoden im Amazon-SNS-Entwicklerleitfaden. Außerdem unter 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, sodass Sie für dieses Ereignis programmatische Maßnahmen ergreifen können. Sie können beispielsweise eine Ereignisbenachrichtigung einrichten, wenn ein Plattformendpunkt deaktiviert ist.

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.

So beheben Sie den Fehler bei der Verwendung von Amazon SNS oder Amazon Pinpoint zum Senden von Push-Benachrichtigungen an APNs

  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 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 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“ zu Push-Benachrichtigung
  8. Wählen Sie Ihre Plattformanwendung.
  9. Stellen Sie sicher, dass die Apple-Bundle-ID die richtige Bundle-ID 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.
  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 die folgenden Attribute:
    - „Aktiviert“ auf „true“.
    - „Token“: Geben Sie das neu generierte Geräte-Token an.

Für Amazon Pinpoint

  1. Führen Sie den AWS-CLI-Befehl update-endpoint aus.
  2. Ändern Sie die folgenden Attribute:
    - „Adresse“: Geben Sie das neu generierte Geräte-Token an.

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


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?