Come posso risolvere gli errori "DeviceTokenNotForTopic" durante la pubblicazione di notifiche push APN tramite Amazon SNS o Amazon Pinpoint?

4 minuti di lettura
0

Le mie notifiche push mobili di Apple Push Notification Service (APN) non vengono inviate tramite il Servizio di notifica semplice Amazon (Amazon SNS) o Amazon Pinpoint. Quando risulta impossibile eseguire le notifiche push, APN restituisce un codice di stato 400/410 con un messaggio di errore "DeviceTokenNotForTopic". Perché ricevo questo errore e come posso risolvere il problema?

Breve descrizione

Quando si crea un'applicazione di piattaforma Amazon SNS o si configura un canale di APN Amazon Pinpoint, è necessario un certificato/token collegato a un ID bundle specifico. L'applicazione genera un token dispositivo con quell'ID bundle. Quando si invia un messaggio a un endpoint del dispositivo, gli APN si aspettano lo stesso ID bundle per questo token dispositivo.

Se l'APN preleva un token dispositivo con un ID bundle diverso, restituisce un codice di stato 400/410 e il seguente errore: "DeviceTokenNotForTopic". Quando si verifica questo errore, gli APN disattivano l'endpoint della piattaforma associato e visualizzano lo stato "disabilitato" per questo endpoint su SNS.

Per ulteriori informazioni, consulta le sezioni Panoramica del processo di notifica utente e Metodi di autenticazione per Apple nella Guida per gli sviluppatori Amazon SNS. Inoltre, consulta la sezione Handling notification responses from APNs (Gestione delle risposte alle notifiche degli APN) sul sito Web di Apple Developer.

Nota: puoi impostare le notifiche degli eventi delle applicazioni per dispositivi mobili per quando si verificano determinati eventi dell'applicazione, in modo da poter intraprendere azioni programmatiche su quell'evento. Ad esempio, è possibile impostare una notifica di evento quando un endpoint della piattaforma viene disattivato.

Risoluzione

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

Per risolvere l'errore quando si utilizza Amazon SNS o Amazon Pinpoint per inviare notifiche push agli APN

1.    Controlla innanzitutto l'ID bundle registrato con gli APN per la tua applicazione.

2.    Aggiorna l'ID bundle dell'applicazione in modo che corrisponda all'ID bundle registrato con gli APN e generi un nuovo token dispositivo.

3.    Quindi, aggiorna l'endpoint della piattaforma con il token dispositivo appena generato.

Controlla l'ID bundle registrato con gli APN per la tua applicazione

Autenticazione basata su certificati

1.    Accedi al tuo account Apple Developer.

2.    Nella barra di navigazione a sinistra, scegli Certificates, IDs & Profiles (Certificati, ID e profili).

3.    Nella barra di navigazione a sinistra, scegli Identifiers (Identificatori).

4.    Scegli la tua applicazione.

Nota: per verificare che l'applicazione sia collegata a un certificato, accedi a Certificates (Certificati) e quindi visualizza l'ID bundle inName (Nome).

5.    Copia l'ID bundle che si trova nel campo Name (Nome). Questo è l'ID bundle registrato con gli APN per la tua applicazione.

Autenticazione basata su token

Per l'autenticazione basata su token, è possibile mappare più ID bundle (applicazioni) con un singolo token. Per verificare che si stia utilizzando l'ID bundle corretto, confermalo sul tuo account Apple Developer o sulla tua console SNS.

1.    Accedi al tuo account Apple Developer.

2.    Nella barra di navigazione a sinistra, scegli Certificates, IDs & Profiles (Certificati, ID e profili).

3.    Nella barra di navigazione a sinistra, scegli Identifiers (Identificatori). Quindi, App IDs (ID App).

4.    Scegli la tua applicazione.

5.    Copia l'ID bundle che si trova nel campo Name (Nome). Questo è l'ID bundle registrato con gli APN per la tua applicazione.

6.    Accedi alla tua console SNS.

7.    Vai a Push Notification (Notifica push) in Mobile.

8.    Scegli l'applicazione della piattaforma.

9.    Verifica che l'ID bundle Apple sia l'ID bundle corretto.

Per aggiornare l'ID bundle dell'applicazione in modo che corrisponda all'ID bundle registrato con gli APN

1.    Scarica Xcode, se non l'hai già fatto.

2.    Apri Xcode.

3.    Scegli la cartella root del progetto della tua applicazione.

4.    Scegli Signing & Capabilities (Firma e funzionalità).

5.    Nel campo di testo Bundle Identifier (Identificativo bundle), inserisci l'ID bundle registrato con gli APN per la tua applicazione. Il nuovo ID bundle viene salvato automaticamente.

6.    Esegui l'applicazione per generare un nuovo token dispositivo con l'ID bundle corretto.

Aggiorna l'endpoint della piattaforma

Per Amazon SNS

1.    Esegui il comando dell'AWS CLI set-endpoint-attributes.

2.    Cambia l'attributo Enabled (Abilitato) in true (vero). Quindi, per Token, specifica il token dispositivo appena generato.

Per Amazon Pinpoint

1.    Esegui il comando dell'AWS CLI update-endpoint.

2.    Per l'attributo Address (Indirizzo), specifica il token dispositivo appena generato.

Per ulteriori informazioni, consulta la sezione Creazione di un endpoint di piattaforma nella Guida per gli sviluppatori Amazon SNS e Aggiunta di endpoint ad Amazon Pinpoint.


Informazioni correlate

Errori delle API push mobili