2014-05-16 24 views
6

Tôi đang sử dụng Amazon SNS để gửi thông báo đẩy tới ứng dụng iOS của mình.Làm cách nào để kích hoạt lại điểm cuối Amazon SNS bằng SDK iOS?

Vì lý do nào đó, điểm cuối của tôi dường như bị đặt thành "sai" - mặc dù tôi biết rằng chúng là điểm cuối hợp lệ (vì bật lại chúng sau đó cung cấp thông báo đẩy mới cho thiết bị). There's a similar Stack Overflow question here - but no technical answer as to how to resolve the issue.

Vì vậy: tôi cần tìm ra cách đặt điểm cuối là enabled.

only sparse Amazon documentation để biết cách thực hiện điều này, vì vậy, tôi làm là tôi cần sử dụng khóa/giá trị "đã bật" trong từ điển thuộc tính.

đoạn của tôi về mã trông như thế này:

AmazonSNSClient *sns = [AmazonClientManager sns]; 

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

SNSCreatePlatformEndpointResponse *endpointResponse = [sns createPlatformEndpoint:endpointPutRequest]; 

này hoạt động hoàn hảo, ngoại trừ một dòng mã, thiết lập attributesValue "Enabled" thành "true". Tôi đã thử tất cả các kết hợp sau:

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

... nhưng không ai trong số chúng hoạt động. Cách thích hợp để viết dòng mã này là gì? Tôi có nên sử dụng BOOL bằng cách nào đó không? Một số nguyên?

Trả lời

5

Có một số điều kiện mà tôi đã tìm thấy cho đến nay, trong đó dùng cuối của thuộc tính được sai mặc dù điểm cuối và thẻ là chính xác

  1. Nếu bạn đã tạo ra amazon SNS ứng dụng với sản xuất giấy chứng nhận APNS nhưng bạn cố gắng đăng ký thiết bị của bạn với SANDBOX APNS tức là APNS phát triển sau đó nó sẽ nhận được false

  2. Khi người dùng tắt thông báo trong Cài đặt điện thoại, thì APNS của Apple sẽ vô hiệu hóa cờ ảnh hưởng đến amazon sns. bất cứ khi nào người dùng cho phép thông báo một lần nữa bạn có gửi lại thẻ để amazon để setAttribute đúng nghĩa cần phải xử lý về phía khách hàng

  3. Khi người dùng xóa/unistalls ứng dụng

1

Tôi đang sử dụng SDK PHP nhưng gặp phải lỗi tương tự. Giải pháp duy nhất tôi tìm thấy trước tiên gọi phương thức 'createPlatformEndpoint' mà không có thuộc tính Enabled và sau đó gọi phương thức 'setEndpointAttributes' để đặt cờ Enabled của điểm cuối thành true.

3

Theo số following khi bật lại điểm cuối "... bạn cần phải cập nhật mã thông báo trước khi bạn có thể đặt bật trên điểm cuối".

Điều này có thể được thực hiện với hai cuộc gọi riêng biệt: CreatePlatformEndpoint để tạo/cập nhật các dấu hiệu tiếp theo SetEndpointAttributes để thiết lập "Enabled" thành "đúng"

này đã được thử nghiệm bằng cách thủ công vô hiệu hóa các thiết bị đầu cuối thông qua Bảng điều khiển SNS và sau đó đăng ký lại thiết bị và sử dụng hai cuộc gọi ở trên.

+0

Cảm ơn bạn đã liên kết. Mặc dù Amazon nói rằng bạn cần phải "cập nhật" mã thông báo, điều đó chỉ có ý nghĩa nếu Apple cung cấp một mã mới.Hầu hết các cài đặt lại của cùng một ứng dụng từ quả táo đều cung cấp cho tôi cùng một mã thông báo, điều này khiến tôi không thể sử dụng thiết bị đó để nhận thông báo. – Priyeshj

Các vấn đề liên quan