亚马逊sns移动推送CreatePlatformEndpoint使用相同的令牌和用户数据创建多个端点

时间:2016-10-21 05:50:37

标签: google-cloud-messaging amazon-sns

我正在使用amazon sns mobile push发送推送通知。为了使用amazon注册设备令牌,我正在使用CreatePlatformEndpoint。

根据亚马逊文档(http://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformEndpoint.html):

CreatePlatformEndpoint操作是幂等的,因此如果请求者已拥有具有相同设备令牌和属性的端点,则返回该端点的ARN而不创建新端点。

但是当我使用CreatePlatformEndpoint时,我能够多次注册具有相同属性(用户数据)的相同令牌(最多3次)。无法理解这种行为。

1 个答案:

答案 0 :(得分:0)

chetna bhandari,

我遇到了这个问题。我有一个iOS(APNS)平台应用程序和另一个Android(GCM)平台应用程序。对于iOS,createPlatformEndpoint方法可以正常工作。但对于Android,使用相同的令牌创建多个端点(最多3个,就像你一样)。下次我尝试使用createPlatformEndpoint时,抛出异常。

执行此操作的正确方法是将端点存储在应用程序中。如果尚未存储,请创建并存储。

然后,伪代码是:

retrieve the latest device token from the mobile operating system
if (the platform endpoint ARN is not stored)
  # this is a first-time registration
  call create platform endpoint
  store the returned platform endpoint ARN
endif

call get endpoint attributes on the platform endpoint ARN 

if (while getting the attributes a not-found exception is thrown)
  # the platform endpoint was deleted 
  call create platform endpoint with the latest device token
  store the returned platform endpoint ARN
else 
  if (the device token in the endpoint does not match the latest one) or 
      (get endpoint attributes shows the endpoint as disabled)
    call set endpoint attributes to set the latest device token and then 
enable the platform endpoint
  endif
endif

您可以在此链接中看到: Create a Platform Endpoint and Manage Device Tokens