2014-05-16 7 views
6

Sto usando Amazon SNS per inviare notifiche push alla mia app iOS.Come riattivare un endpoint Amazon SNS con l'SDK iOS?

Per qualsiasi motivo, i miei endpoint sembrano occasionalmente impostati su "false", anche se so che sono endpoint validi (poiché riattivandoli forniscono quindi nuove notifiche push al dispositivo). There's a similar Stack Overflow question here - but no technical answer as to how to resolve the issue.

Quindi: ho bisogno di capire come impostare l'endpoint come enabled.

C'è only sparse Amazon documentation per sapere come fare questo, quindi quello che faccio che so è che ho bisogno di usare il "permesso" chiave/valore nel dizionario attributi.

mio frammento di codice simile a questo:

AmazonSNSClient *sns = [AmazonClientManager sns]; 

SNSCreatePlatformEndpointRequest *endpointPutRequest = [SNSCreatePlatformEndpointRequest new]; 
endpointPutRequest.platformApplicationArn = kBXTAWSAppARN; 
endpointPutRequest.token = deviceToken; 
[endpointPutRequest setAttributesValue:@"True" forKey:@"Enabled"]; 

SNSCreatePlatformEndpointResponse *endpointResponse = [sns createPlatformEndpoint:endpointPutRequest]; 

Questo funziona perfettamente, ad eccezione di una sola riga di codice, che imposta l'attributesValue "Enabled" a "true". Ho provato tutte queste combinazioni:

[endpointPutRequest setAttributesValue:@"true" forKey:@"Enabled"]; 
[endpointPutRequest setAttributesValue:@"true" forKey:@"enabled"]; 
[endpointPutRequest setAttributesValue:@"True" forKey:@"Enabled"]; 

... eppure nessuno di loro lavoro. Qual è il modo corretto di scrivere questa riga di codice? Dovrei usare un BOOL in qualche modo? Un numero intero?

risposta

5

Ci sono alcune condizioni che ho trovato finora in che attribuisce endPoint ottiene falsa anche se gli endpoint e gettoni siano corretti

  1. Se è stato creato il amazon SNS app con produzione certificato APNS ma si tenta di registra il tuo dispositivo con APNS SANDBOX cioè APNS di sviluppo quindi diventa falso

  2. Quando l'utente disattiva le notifiche in Impostazioni telefono, Apple APNS disabilita il flag che influisce anche su amazon sns. ogni volta che consente all'utente di nuovo la notifica si deve inviare nuovamente il token a Amazon per SetAttribute vero cioè bisogno di gestire il lato client

  3. Quando l'utente rimuove/unistalls l'applicazione

1

Sto utilizzando l'SDK PHP, ma incontrato lo stesso errore. L'unica soluzione che ho trovato è stato chiamare prima il metodo 'createPlatformEndpoint' senza l'attributo Enabled e successivamente chiamare il metodo 'setEndpointAttributes' per impostare il flag Enabled dell'endpoint su true.

3

Secondo lo following quando si riattiva l'endpoint "... è necessario aggiornare il token prima di poter essere abilitato su un endpoint".

Questo può essere realizzato con due chiamate separate: CreatePlatformEndpoint per creare/aggiornare il token seguita da SetEndpointAttributes impostare "Abilitato" a "vero"

Questo è stato testato disattivando manualmente l'endpoint tramite Console SNS e quindi registrare nuovamente il dispositivo e utilizzare le due chiamate sopra.

+0

Grazie per il collegamento. Anche se Amazon dice che devi "aggiornare" token, questo ha senso solo se Apple ne fornisce uno nuovo.La maggior parte delle reinstallazioni della stessa app di Apple mi dà lo stesso token, il che mi impedisce di utilizzare quel dispositivo per le notifiche. – Priyeshj