通过示例

时间:2018-02-21 14:48:04

标签: amazon-web-services push-notification google-cloud-messaging apple-push-notifications amazon-sns

我试图围绕AWS Mobile Push Notification的工作方式。具体来说,我正在构建一个能够向我的用户设备上运行的移动应用程序发送通知的Web服务。阅读完所有文档后,听起来就像高级流程一样:

  • 配置
    • 我需要进入各自的推送通知服务(适用于Android的GCM和适用于iOS的APNS)并配置它们以获取我配置后端服务的凭据,以便在运行时连接到它们< / LI>
    • 我需要登录AWS SNS控制台并生成一个平台应用程序ARN(PlatformApplicationARN),我还将后端配置为使用
  • 代码流程(运行时)
    1. 当新用户第一次注册时,或者现有用户在新设备上登录时,我会让应用程序向我的服务发送他们的设备信息。此设备信息的一个关键部分是其设备令牌(在AWS文档中也称为“注册ID”)。此令牌由其操作系统生成,并在其各自的推送通知服务中唯一标识其设备(对我而言,再次是GCM或APNS)
    2. 当我的服务收到这个新的设备信息时,我保存了它,我还使用设备令牌来点击AWS SNS API(以及我配置的PlatformApplicationARN)以生成一个唯一的EndpointARN那个特定的设备
    3. 现在,只要我的后端决定需要向该用户发送通知,我就可以查找与该用户关联的所有设备(我之前存储在我的数据库中),并获取每个设备的EndpointARN。然后只需要点击AWS SNS API将我的通知消息发送到EndpointARN,并且像那样听起来就像AWS SNS一样将处理其他所有事情(并将实际消息发送到设备)

所以在我继续前进之前,我只是在寻找帮助理智的人来检查我的理解并提供任何课程更正,如果我误解了任何内容或缺少配置/流程的任何重要部分!< / strong>假设我或多或少走上正轨...

一旦我向EndpointARN发送通知消息,我仍然没有看到SNS如何能够连接到GCM和APNS。他们是否与这些服务保持自己的集成/连接?或者我以某种方式将我自己的GCM / APNS凭证注入AWS SNS API调用?

此外,我知道推送通知可以相当配置,允许您执行以下操作:

  • 确定设备收到通知时应播放的声音
  • 确定收到通知时闪烁的颜色LED指示灯开启/关闭(在我的Android手机上,不同的应用程序会导致绿色,蓝色甚至紫色LED指示灯闪烁!)
  • 确定Android / iOS操作系统本身是否收到通知(在这种情况下,如果我在离开它几分钟后回到手机,我可以按任意按钮查看高级别列出的摘要我收到的任何新通知); 通知是否纯粹是“应用内”通知,在这种情况下,如果我实际打开应用,我只会看到收到通知。

我想知道所有这些配置发生在哪里?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我可以确认高水平流程是:

  1. 登录AWS SNS并创建2个不同的平台应用程序,1个用于Android(GCM - Google云消息传递),另一个用于iOS(APNS - Apple推送通知服务)
  2. 对于每个平台应用程序,您将获得PlatformApplicationArn,系统将要求您提供凭据,以便SNS可以连接到您各自的GCM / APNS帐户
    • 对于GCM,您只需要服务器API密钥(可从GCM / Firebase CM获取)
    • 对于APNS,您需要通过Mac上的 Key Chain Access 工具进行真正劳动密集型的创建证书的过程,这不是很有趣......
  3. 将这两个PlaformApplicationArn添加到您的代码
  4. 当用户使用您的应用注册新设备时,他们会向您发送设备令牌(由GCM或APNS配置),以便向GCM / APNS唯一标识它们
  5. 将此设备令牌与您的PlatformApplicationArn GCM或APNS结合使用,并使用AWS SNS SDK为设备创建EndpointArn。无论你喜欢,都要存储EndpointArn
  6. 现在,您可以随时使用AWS SNS SDK将消息推送到EndpointArn(特定设备)。