2014-05-16 6 views
6

Ich verwende Amazon SNS, um Push-Benachrichtigungen an meine iOS App zu senden.Wie kann ein Amazon SNS-Endpunkt mit dem iOS SDK reaktiviert werden?

Aus irgendeinem Grund scheinen meine Endpunkte gelegentlich auf "false" gesetzt zu sein - obwohl ich weiß, dass es sich um gültige Endpunkte handelt (da die erneute Aktivierung dann neue Push-Benachrichtigungen an das Gerät sendet). There's a similar Stack Overflow question here - but no technical answer as to how to resolve the issue.

Also: Ich muss herausfinden, wie Sie den Endpunkt als enabled setzen.

Es gibt only sparse Amazon documentation für, wie man das tut, also was ich tun weiß ist, dass ich den "ermöglichten" Schlüssel/Wert im Attributwörterbuch verwenden muss.

Mein Code-Snippet sieht wie folgt aus:

AmazonSNSClient *sns = [AmazonClientManager sns]; 

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

SNSCreatePlatformEndpointResponse *endpointResponse = [sns createPlatformEndpoint:endpointPutRequest]; 

Das funktioniert perfekt, mit Ausnahme einer einzigen Code-Zeile, die die attributesValue setzt "Enabled" auf "true". Ich habe alle diese Kombinationen ausprobiert:

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

... noch keiner von ihnen funktioniert. Was ist der richtige Weg, um diese Codezeile zu schreiben? Sollte ich irgendwie ein BOOL benutzen? Eine ganze Zahl?

Antwort

5

Es gibt einige Bedingungen, die ich bisher gefunden habe, in dem endPoint bekommt sogar falsche Attribute obwohl Endpunkte und Token korrekt sind

  1. Wenn Sie die Amazon SNS-App mit Produktion APNS Zertifikat erstellt haben, aber Sie versuchen, Registrieren Sie Ihr Gerät mit SANDBOX APNS dh Entwicklung APNS dann wird es falsch erhalten

  2. Wenn Benutzer Benachrichtigungen in Telefoneinstellungen deaktiviert dann deaktiviert Apple APNS die Flagge, die in Amazon SNS betrifft auch. immer dann, wenn Benutzer die Benachrichtigung wieder ermöglicht haben Sie die Token amazon erneut setAttribute wahr dh müssen auf Client-Seite zu handhaben

  3. Wenn Benutzer entfernt/unistalls die App

1

ich das PHP SDK bin mit aber Derselbe Fehler ist aufgetreten. Die einzige Lösung, die ich fand, war, zuerst die 'createPlatformEndpoint'-Methode ohne das Enabled-Attribut aufzurufen und danach die' setEndpointAttributes'-Methode aufzurufen, um das Enabled-Flag des Endpunkts auf 'true' zu setzen.

3

Gemäß der following muss der Endpunkt "... Sie müssen das Token aktualisieren, bevor Sie auf einem Endpunkt aktivieren können" erneut aktivieren.

Dies kann mit zwei getrennten Anrufen erreicht werden: CreatePlatformEndpoint auf das Token von SetEndpointAttributes gefolgt erstellen/aktualisieren, um „ Aktiviert“ auf „wahr

Dies wurde durch die manuelle Deaktivierung des Endpunkts über die getestete SNS-Konsole und dann erneut registrieren das Gerät und die beiden oben genannten Anrufe.

+0

Danke für den Link. Obwohl Amazon sagt, dass Sie ein Token "updaten" müssen, macht das nur Sinn, wenn Apple ein neues zur Verfügung stellt.Die meisten Neuinstallationen der gleichen App von Apple gibt mir das gleiche Token, wodurch ich dieses Gerät für Benachrichtigungen überhaupt nicht verwenden kann. – Priyeshj

Verwandte Themen