我正在创建一个在AWS上运行的后端服务,我将在Android上安装移动客户端,稍后在iOS上安装移动客户端。我需要移动推送功能,以便将事件从后端服务推送到设备。
现在,我对最佳设置有几点关注:
使用AWS SNS实施移动推送有什么好处?对于GCM,我的后端服务代码很容易对GCM API进行publish a message的HTTP调用。
我知道SNS可以作为包括GCM和APNS在内的多种推送服务实现的包装器,我认为这有助于隐藏后端服务中使用的设备类型等细节,但是因为你需要无论如何,为每个持有者创建一个“SNS平台应用程序”,我不太确定 - 我的后端代码是否仍然需要知道它想要与哪种设备通信,以及针对Android与iOS以不同方式发布下游消息?我可以想象,要编写完全不同的代码来推送GCM与APNS之间的消息会更容易,但它会更简单吗?
如果使用SNS包装GCM,注册设备端点的最佳步骤是什么?我一直在努力寻找一个体面的教程,到目前为止我发现的唯一一个就是这样:
在设备上运行的Android应用使用Google Play服务API向GCM注册
在设备上运行的Android应用程序基于GCM令牌注册SNS平台端点,例如使用例如用于访问帐户的AWS Cognito凭据
在设备上运行的Android应用程序将平台端点ARN存储在后端用户数据库等中,以便在需要将推送消息发送到设备时使用
我想也可能让设备只执行步骤1)然后将GCM令牌传递给我的后端服务,后端服务会从中创建一个SNS端点并将其存储在数据库中?这会阻止我的设备处理AWS凭证等。但是我必须在我的服务器上实现GCM / APNS特定的功能。
过期/旋转GCM令牌的处理是否应该设置此程序的因素? 在我的用户数据库中仅存储AWS SNS端点ARN是一个好主意吗?
使用SNS还有其他好处,而不是直接调用GCM / APNS / ......?
答案 0 :(得分:1)
我将把答案分为两部分工作流程和好处。
SNS不仅适用于移动推送通知,还适用于电子邮件和其他一些AWS服务。
另一大好处是SNS topics。您可以在一个主题中对所有端点进行分组,因此您只需发送一个请求,亚马逊将在几秒钟内将其发布到数千台设备