亚马逊SNS移动推送 - 如何批量订阅终端到主题?

15

我正试图将我现有的iOS推送通知基础设施移动到Amazon SNS 移动推送。

我从本地数据库中导出了所有令牌到SNS应用程序(使用CSV格式)。现在,我想向我的所有10,000个用户发送推送通知。我认为唯一的方法是创建一个主题并订阅所有用户到该主题,然后向该主题发布消息。

是否有任何简单的方法可以将我导入系统的所有10,000个用户订阅到一个主题?

谢谢任何帮助!

5个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
16

听起来您已经创建了Amazon SNS平台应用程序,并将令牌导入为Amazon SNS平台终端节点。

您要发送什么类型的通知?

  • 如果您要向每个用户发送自定义消息,请使用直接寻址。使用此方法,您可以对每个EndpointARN进行发布(Publish)

  • 如果您要向所有用户发送相同的消息,请使用主题。您需要将终端节点订阅到主题上。当您准备好发送时,发布(Publish)TopicARN。 Amazon SNS将处理向订阅该主题的所有终端节点的投递。目前,Amazon SNS不提供批量订阅API,因此您将需要针对每个EndpointARN调用Subscribe

完整披露:我在AWS上从事Amazon SNS的工作。


1
每个主题都有10,000个订阅者的限制。在不想在多个主题中注册相同令牌的情况下,如何处理这种情况是最好的方式(当我向所有主题发送通知时,某些用户将会收到多个推送)? - Peacemoon
1
在我的应用程序中,每次应用程序启动时,我都会注册设备令牌。此设备令牌将自动添加到主题中。假设用户A已经在主题1中注册。现在,主题1已经有超过10,000个用户,因此我必须创建主题2。现在,用户A再次启动应用程序,我的应用程序将令牌再次注册到后端(现在在主题2中)。现在,用户A的令牌既在我的主题1中,也在主题2中。当我向主题1和2发送推送时,用户A将收到2个相同的推送。我无法检查令牌是否已注册,因为主题没有搜索API。希望您理解我的解释。 - Peacemoon
7
根据SNS的常见问题解答:“默认情况下,SNS每个主题提供1000万个订阅和每个账户3000个主题。” 因此,我认为10000的问题已经解决了。 - Stas Zhukovskiy
2
嗨@RohanDeshpande,有关这个功能何时可用的消息吗? - Barbaros Alp
2
@ericpeters0n 移动端点[无需确认](http://stackoverflow.com/questions/26376492/amazon-sns-sdk-invalid-parameter-exception-on-subscription-confirmation/26385693#26385693)。 - Rohan Deshpande
显示剩余4条评论

0

现在可以通过将移动端点订阅到主题来实现。默认的订阅者限制已增加。

问:主题数量或每个主题的订阅者数量是否有限制?

默认情况下,SNS每个主题提供1000万个订阅和3000个主题。如需请求更高的限制,请联系我们http://aws.amazon.com/support

http://aws.amazon.com/sns/faqs/?nc2=h_ls


该操作的提问者询问“如何批量订阅主题端点”,而不是订阅限制是什么。 - Zigglzworth

0

很遗憾目前还没有办法...请参考AWS讨论论坛上的批量推送端点订阅到主题

你好,langelvicente,

感谢您提出这个功能请求。我已将此反馈给SNS服务团队进行审查。

最好的问候, Phil P


0

如果您有一个充满端点的应用程序,想要批量订阅SNS主题,则可以通过AWS SNS仪表板执行以下操作:

  1. 进入SNS中的该应用程序
  2. 等待底部的“总项目”计数完成其计数(即所有项目都已列出)
  3. 选中端点列表上方的全选复选框(附有截图)
  4. 点击平台操作>订阅端点到主题
  5. 输入您的主题ARN并单击创建订阅

该过程将开始,并且它将使您的Web浏览器停顿,但是请让它自行运行,因为这需要时间。如果您想查看对主题的订阅增加情况,则可以使用AWS CLI:

 aws sns get-topic-attributes --topic-arn "[YOUR TOPIC ARN]"

请注意 "SubscriptionsConfirmed" 的值

enter image description here


真的有效吗? 我已经完成了这个任务,我们得到了30k+个arns并尝试在一个主题中进行订阅。在创建订阅之后,我检查了主题选项卡,并查看arn订阅计数是否与应用程序选项卡中的项目计数相同。但似乎我需要多次执行(创建订阅)才能订阅所有端点。每个过程中订阅的增加量大约是200-500个端点。有人可以确认一下吗? - rubberdont
它有效。我用了超过40k,但每次只用了大约2k。不是一次性使用40k。 - Zigglzworth
这对我不起作用。我没有看到选择所有端点的选项...也许 AWS 在此期间更改了其用户界面? - ehzicamesmo

-1

是的,但需要注意的是:他们必须同意接收你的推送消息。这意味着对于数据库中的每个标记,每个人都必须同意通过短信和电子邮件接收你发送的未来消息。

每个地址(电话号码、电子邮件)都成为一个终端节点,你可以使用 SNS 创建一个主题,然后订阅每个终端节点。在确认邮件发送给每个终端节点(列表上的人员)后,他们必须确认才能开始通过文本或电子邮件接收你的消息流。

不幸的是,这种确认/同意事件很棘手,必须正确处理。你的 ARN 标题必须简洁(通过短信 7 个字符,不允许使用主题行)。因此,你必须使用他们会认识的名字通过短信与他们联系(SMS 消息将通过短代码 304-something 到达),并且可能被拒绝或者屏蔽。

这并不容易!最好调查一下如何使用移动应用程序的推送消息。这将避免受到紧俏的 SMS 空间的影响,但你可能需要考虑通过电子邮件和/或短信来推广你的移动应用程序,以便他们使用它。显然,由于短信的即时性,人们将在 20 秒内阅读你的第一条确认消息。如果他们确认并接受你的未来消息,这可能是一件好事。

我现在正在做这件事,准备使用我的初始爆炸被认可 -- 创建匿名短信的应用将被iTunes禁止!


问题是关于iOS推送通知,而不是短信或电子邮件。 - Chris Harrison

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,