AWS移动推送通知实例

6
我正在努力理解AWS移动推送通知的工作原理。具体而言,我正在构建一个Web服务,该服务能够发送通知到用户设备上运行的移动应用程序。阅读了所有文档后,大致流程如下:
配置
- 进入相应的Push Notification Services (Android的GCM和iOS的APNS)并配置它们以获取凭据,然后在运行时配置我的后端服务以连接它们。 - 登录AWS SNS控制台,并生成一个平台应用程序ARN(PlatformApplicationARN),也需要将其配置到我的后端服务中。
代码流程(运行时)
- 当有新用户首次注册或现有用户在新设备上登录时,我让应用程序向我的服务发送他们的设备信息。其中关键的一项设备信息是他们的设备令牌(在AWS文档中也称为“注册ID”)。此令牌由其操作系统生成,并在其各自的Push Notification Services(对我来说是GCM或APNS)中唯一标识其设备。 - 当我的服务接收到这个新设备信息时,我会保存它,并使用设备令牌与我的配置的PlatformApplicationARN一起调用AWS SNS API,为该特定设备生成唯一的EndpointARN。 - 现在,每当我的后端决定向该用户发送通知时,我都可以查找与该用户关联的所有设备(先前存储在我的数据库中),并获取每个设备的EndpointARN。然后只需调用AWS SNS API向该EndpointARN发送我的通知消息,AWS SNS将处理其他所有事情,并将实际消息传递给设备。
因此,在进一步操作之前,我正在寻求某人帮助审查我的理解,并提供任何纠正课程和补充遗漏的重要配置/流程!假设我基本上是正确的......
我仍然不明白SNS将如何能够在我向EndpointARN发送通知消息后连接GCM和APNS。它们是否保持自己与这些服务的集成/连接?或者我是否需要以某种方式将自己的GCM/APNS凭据注入到AWS SNS API调用中?
此外,我知道推送通知可以进行相当多的配置,例如:
  • 确定设备接收到通知时应播放的声音
  • 确定接收到通知时闪烁的LED颜色(在我的Android手机上,不同的应用程序会导致绿色、蓝色甚至紫色的LED闪烁!)
  • 确定通知是否由Android/iOS操作系统本身接收(在这种情况下,如果我离开手机几分钟后回来,我可以按任何按钮并查看我收到的任何新通知的高级列表摘要);还是通知纯粹是“应用内”通知,在这种情况下,只有当我实际打开我的应用程序时才会看到我收到了它。

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

1个回答

9
我可以确认整个流程如下:
  1. 登录AWS SNS并创建两个不同的平台应用,一个是Android(FCM - Firebase Cloud Messaging),另一个是iOS(APNS - Apple Push Notification Services)。
  2. 对于每个平台应用程序,您将获得一个PlatformApplicationArn并被要求提供凭据,以使SNS能够连接到您相应的FCM / APNS帐户。
    • 对于FCM,您只需要您的服务器API密钥(这可以从Firebase Cloud Manager中获取)。
    • 对于APNS,您需要通过Mac上的Key Chain Access工具进行创建证书的繁琐过程,这并不好玩...
  3. 将这两个PlaformApplicationArn添加到您代码的配置中。
  4. 当用户使用您的应用程序在新设备上注册时,他们将向您发送一个设备令牌(由FCM或APNS提供),该令牌唯一地将他们标识为FCM / APNS。
  5. 将此设备令牌与您的FCM或APNS的PlatformApplicationArn相结合,并使用AWS SNS SDK为设备创建一个EndpointArn。以你喜欢的方式存储这个EndpointArn
  6. 现在,您可以使用AWS SNS SDK随时向您的EndpointArn(特定设备)推送消息。

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