2014-05-16 52 views
6

我使用Amazon SNS向我的iOS應用發送推送通知。即使我知道它們是有效的端點(因爲重新啓用它們然後將新的推送通知提供給設備),無論出於何種原因,我的端點有時似乎被設置爲「虛假」。 There's a similar Stack Overflow question here - but no technical answer as to how to resolve the issue.如何使用iOS SDK重新啓用Amazon SNS端點?

所以:我需要弄清楚如何設置端點爲enabled

還有only sparse Amazon documentation如何做到這一點,所以我知道知道我需要在屬性字典中使用「enabled」鍵/值。

我的代碼片段看起來是這樣的:

AmazonSNSClient *sns = [AmazonClientManager sns]; 

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

SNSCreatePlatformEndpointResponse *endpointResponse = [sns createPlatformEndpoint:endpointPutRequest]; 

這工作完全,除了代碼單行線,其中規定「已啓用」,以「真」的attributesValue。我已經嘗試了所有這些組合:

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

...但他們都沒有工作。寫這行代碼的正確方法是什麼?我應該以某種方式使用BOOL嗎?一個整數?

回答

5

有我迄今在端點屬性中獲得虛假即使端點和令牌是正確的

  1. 如果您已經創建了亞馬遜SNS應用與生產APNS證書,但你嘗試一些條件註冊您的設備與SANDBOX APNS ie開發APNS然後它將得到虛假

  2. 當用戶關閉在電話設置通知,然後蘋果APNS禁用旗子也影響亞馬遜SNS。每當用戶再次啓用通知你重發令牌亞馬遜的setAttribute真正的即需要處理在客戶端

  3. 當用戶刪除/ unistalls

1

我使用的PHP SDK的應用程序,但遇到同樣的錯誤。我找到的唯一解決方案是首先調用沒有Enabled屬性的'createPlatformEndpoint'方法,然後調用'setEndpointAttributes'方法將端點的Enabled標誌設置爲true。

3

根據following重新啓用端點「...您需要更新令牌後才能在端點上啓用」。

這可以用兩個單獨的呼叫來完成:CreatePlatformEndpoint創建/更新令牌隨後SetEndpointAttributes設置「啓用」到「

這通過經由手動禁用端點測試SNS控制檯,然後重新註冊設備並使用上述兩個呼叫。

+0

感謝您的鏈接。儘管亞馬遜說你需要「更新」令牌,但如果蘋果提供了新的令牌,這種情況纔有意義。蘋果公司的同一款應用程序的大部分重新安裝都給了我相同的信號,這使我無法使用該設備進行通知。 – Priyeshj

相關問題