我正在努力理解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调用中?
此外,我知道推送通知可以进行相当多的配置,例如:
配置
- 进入相应的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操作系统本身接收(在这种情况下,如果我离开手机几分钟后回来,我可以按任何按钮并查看我收到的任何新通知的高级列表摘要);还是通知纯粹是“应用内”通知,在这种情况下,只有当我实际打开我的应用程序时才会看到我收到了它。
我想知道所有这些配置都发生在哪里?有什么想法吗?