使用 Amazon SNS 服务发送推送通知

Posted

技术标签:

【中文标题】使用 Amazon SNS 服务发送推送通知【英文标题】:Send Push Notifications using Amazon SNS service 【发布时间】:2015-01-01 12:12:01 【问题描述】:

我们正在开发一个发送推送通知的移动应用程序,我们希望使用 Amazon SNS 服务来完成,我想确认一下我们计划如何管理设备注册和推送通知发送的总体思路。

据我所知:

在 Amazon SNS 中有 PlatformApplication 的概念,我们指定它是否是 android/iPhone 以及环境(测试/产品,...)

然后,有“用于设备和移动应用程序”的 PlatformEndPoint 的概念,因此,我想对于每个下载并安装应用程序的人来说,有必要根据设备的类型在适当的平台上创建一个 EndPoint (安卓,苹果)

我的问题是,当这个 PlatformEndPoint 应该被创建时,每次这个人登录到应用程序时,我们应该在他每次注销时删除它?

然后,当创建 PlatformEndPoint 并且我需要向特定用户(不是所有人)发送推送通知时,我将使用带有适当 TargetArn 参数的 Publish API。

非常感谢您的cmets和建议

【问题讨论】:

您能否澄清一下您是想向订阅单个主题的所有设备发送批量消息,还是想向单个端点发送消息? 【参考方案1】:

首先您需要通过 SNS 仪表板(或使用 SDK)手动创建应用程序端点。

您可以在此处为 Apple (APNS-Sandbox) 声明一个测试环境。其他环境没有专门的测试环境。 (即 Google),但我们鼓励您创建测试和生产应用程序,即使它们将使用相同的消息传递提供程序。

你最终可能会:

    使用 APNS-Sandbox 进行“Apple-staging” 带有 APNS 的“Apple 生产”

注意:您可以针对特定设备类型优化端点。 “iPhone-staging”和/或“iPad-staging”等

第二: 拥有应用程序端点后,您的系统中需要有代码,该代码知道根据系统环境要命中哪个端点。即开发和登台可能指向“Apple-staging”端点。 Production 可以指向“Apple-production”。

第三: 每当用户接受推送通知对话框时,您必须创建用户的端点,该端点又与应用程序端点相关。

    用户同意 P.N. 您的服务器接收手机从 APNS、GMS 等获取的令牌。 反过来,您的服务器将使用 Amazon 的 sdk 创建端点。 就是这样。

最后 当您想要发送推送通知时,您需要获取用户的 arn(或端点)并使用 Amazon sdk 中的publish 方法。

错误处理

如果推送通知未成功发送,用户的端点会自动禁用。您需要决定如何处理它们以接收未来的通知。您可以利用 Amazon SQS 解决这个问题,错误处理的实施可能会有所不同。

【讨论】:

有教程链接吗?

以上是关于使用 Amazon SNS 服务发送推送通知的主要内容,如果未能解决你的问题,请参考以下文章

未收到来自 Amazon SNS 的 GCM 推送通知

如何使用 Amazon Simple Notification Service (SNS) 批量发送数百万个推送通知

使用 Amazon SNS 向 iOS 发送推送通知并使用本地化格式化字符串处理它们

如何在一次 API 调用中通过 Amazon SNS 发送推送通知?

推送通知的 Amazon SNS android 设备令牌限制

Amazon SNS 推送通知服务