AWS 移动推送通知示例

sme*_*eeb 5 push-notification amazon-web-services apple-push-notifications amazon-sns google-cloud-messaging

我正在尝试了解AWS 移动推送通知的工作原理。具体来说,我正在构建一个 Web 服务,该服务能够向我的用户设备上运行的移动应用程序发送通知。在阅读了他们所有的文档后,听起来高级流程是:

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

因此,在我继续之前,我只是在寻找某人来帮助理智检查我的理解并在我误解任何内容或遗漏任何重要的配置/流程时提供任何课程更正!假设我或多或少走上正轨......

一旦我将通知消息发送到EndpointARN. 他们是否维护自己与这些服务的集成/连接?或者我是否以某种方式将我自己的 GCM/APNS 凭证注入到 AWS SNS API 调用中?

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

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

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

sme*_*eeb 9

I can confirm that the high level flow is:

  1. Log into AWS SNS and create 2 different Platform Applications, 1 for Android (FCM -- Firebase Cloud Messaging) and the other for iOS (APNS -- Apple Push Notification Services)
  2. For each Platform Application you'll get a PlatformApplicationArn and you will be asked for credentials so that SNS can connect to your respective FCM/APNS accounts
    • For FCM you will just need your Server API Key (this can be obtained from Firebase Cloud Manager)
    • For APNS you will need to go through a really labor-intensive process of creating certificates through the Key Chain Access tool on your Mac, this was not fun...
  3. Add these 2 PlaformApplicationArns to your code's config
  4. When a user registers a new device with your app, they will send you a device token (provisioned by FCM or APNS) that uniquely identifies them to FCM/APNS
  5. 将此设备令牌与您PlatformApplicationArn的 FCM 或 APNS结合使用,并使用 AWS SNS SDKEndpointArn为设备创建一个。随心所欲地存储它EndpointArn
  6. 现在,您可以随时使用 AWS SNS SDK 将消息推送到您的EndpointArn(特定设备)。