当前位置: 首页 > 知识库问答 >
问题:

Amazon sns移动推送CreatePlatformEndpoint使用相同的令牌和用户数据创建多个endpoint

郑博厚
2023-03-14

我正在使用亚马逊sns移动推送来发送推送通知。为了向亚马逊注册设备令牌,我使用的是创建平台终端节点。

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

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

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

共有1个答案

暴夕
2023-03-14

切特娜·班达里,

我有这个问题。我有一个适用于iOS(APNS)的平台应用程序,另一个用于Android(GCM)的平台应用程序。对于 iOS,创建平台终结点的方法工作正常。但对于 Android,使用相同的令牌创建多个终结点(最多 3 个,就像你一样)。下次我尝试使用创建平台终结点时,会引发异常。

正确的做法是将endpoint存储在应用程序中。如果还没有存储,就创建并存储。

然后,伪代码是:

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

您可以在此链接中看到:创建平台终端节点和管理设备令牌

 类似资料:
  • 我使用在我的ASP. NET Core应用程序中实现Stripe。 我知道如何使用获得信用卡充值的令牌,但是我从哪里获得令牌来创建客户呢? 在文档中,我看到我需要获得一个令牌来创建客户,但不确定该令牌来自何处。https://stripe.com/docs/api/dotnet#create_customer 据我所知,代币只能使用一次,所以它不能是我在信用卡充值前得到的相同代币。

  • 更新时间:2019-11-11 10:23:12 节点简介 移动应用推送节点可用于将设备,服务的信息,自定义提示信息,定时信息推送到移动应用。 使用场景 可以使用移动应用推送节点将设备的信息和异常情况推送到移动端,也可以定时同步信息到移动端,方便用户获取和察觉,例如手机APP就可以看到设备的工作状态,获取存储信息的情况,例如天气预报推送。 配置项 选择推送配置 选择推送的应用,是本账户下的移动列表

  • 我正在使用JGit克隆存储库,对文件进行一些更改,提交,标记它,然后将其推送到远程存储库。 我已经使用JGit编写了代码,它将克隆存储库,在文件中进行一些更改,然后提交更改,创建新标记,并推送提交和标记。 推送后,我希望远程存储库显示我的更改和新标签,但是在远程存储库中显示的是带有提交的更改,但是标签不可见。它显示“无标签”。

  • 我需要一些帮助,所以我有一个这种格式的json 现在我需要使用js添加一个新数组,我不允许更改JSON的结构,所以现在,在我的js中,我有如下内容 现在,使用这些变量,需要在现有的JS文件中使用JS中的变量创建一个新块 因此,一旦添加了这些内容,JSON必须如下所示 感谢阅读!我试过不和,但还是想不通

  • 我试图实现一个评论部分,按下按钮后,我想用ajax更新评论部分,这样页面就不必刷新了... 在这个评论部分,我有一个textarea 1按钮,每个评论都有几个隐藏字段,用户可以回答特定的评论。。。 因此,如果有50条评论,也有50个答案字段,每个字段1条。。。 除了一件事之外,每件事都有效… -要么我将按钮和字段的所有id命名为相同的名称(即id=“sendAnswer”和id=“answer”,

  • 首先,我对Github操作还很陌生。 我试图使用Github操作自动将我的回购推到带有访问令牌的Gitlab。但是,我总是得到错误 我尝试了GitLab Remote:HTTP Basic:Access denied and fatal Authentication,中的解决方案,但如果我将该行放在.yml中,它将中断并返回错误代码5。如果我不放那一行,我会得到上面描述的错误。 带有尝试历史记录的