簡體   English   中英

如何使用iOS SDK重新啟用Amazon SNS端點?

[英]How to re-enable an Amazon SNS endpoint with the iOS SDK?

我正在使用Amazon SNS向我的iOS應用程序發送推送通知。

無論出於何種原因,我的端點偶爾會被設置為“假” - 即使我知道它們是有效的端點(因為重新啟用它們然后向設備發送新的推送通知)。 這里有類似的Stack Overflow問題 - 但沒有關於如何解決問題的技術答案。

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

關於如何執行此操作只有稀疏的亞馬遜文檔 ,所以我知道的是我需要在屬性字典中使用“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“Enabled”設置為“true”。 我嘗試了所有這些組合:

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

......但它們都不起作用。 編寫這行代碼的正確方法是什么? 我應該以某種方式使用BOOL嗎? 整數?

到目前為止,我發現有一些條件,即使端點和令牌是正確的,endPoint屬性也會變為false

  1. 如果您使用生產APNS證書創建了亞馬遜sns應用程序,但是您嘗試使用SANDBOX APNS(即開發APNS)注冊您的設備,那么它將會出錯

  2. 當用戶關閉手機設置中的通知時,Apple APNS也會禁用影響亞馬遜sns的標志。 每當用戶再次啟用通知時,您已將令牌重新發送到amazon以設置屬性,即需要在客戶端處理

  3. 當用戶刪除/取消應用程序時

根據以下內容重新啟用端點時“......您需要先更新令牌,然后才能在端點上設置啟用”。

這可以通過兩個單獨的調用來完成: CreatePlatformEndpoint創建/更新令牌,然后是SetEndpointAttributes將“ Enabled ”設置為“ true

通過SNS控制台手動禁用端點,然后重新注冊設備並使用上面的兩個調用進行測試。

我正在使用PHP SDK但遇到了同樣的錯誤。 我發現的唯一解決方案是首先調用不帶Enabled屬性的'createPlatformEndpoint'方法,然后調用'setEndpointAttributes'方法將端點的Enabled標志設置為true。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM