我正在为我的 android 项目使用 AWS
资源,我计划使用 AWS SNS
为我的项目添加推送通知服务。很少有问题困扰着我。我没有发现任何关于这些的问题,除了一两个但解释不清楚的问题。
1.AWS
是否支持FCM
? SNS
与 GCM
一起使用。但 Google 建议使用 FCM 而不是 GCM
。我没有找到支持 FCM
的 AWS
。
2.即使在发送推送通知之后,AWS
是否会将消息(或数据)存储到他们的数据库中?
3.我尝试将FCM api key放入SNS应用平台,为什么显示无效参数?
最佳答案
FCM 向后兼容 GCM。在 AWS 上设置 FCM 的步骤与 GCM set up procedure 相同。并且(至少目前)FCM 在服务器端配置方面与 GCM 和 SNS 透明地工作。
然而,如果您将 data
负载发送到 Android 设备,除非您实现 client side service,否则它们不会被处理。扩展了 FirebaseMessagingService
。 AWS 控制台中的默认 JSON 消息生成器发送 data
消息,除非实现上述服务,否则您的应用程序将忽略这些消息。为了在初始测试中解决这个问题,您可以提供一个自定义的 notification
有效负载,您的设备将接收该有效负载(只要您的应用不在前台)
有GCM-FCM migration instructions由 Google 提供,但您需要进行的更改主要在应用端。
使用 SNS 在您的应用上测试 GCM/FCM 需要遵循的步骤是:
- 创建 Platform Application in SNS ,选择 Google Cloud Messaging (GCM) 作为推送通知平台,并提供您的 Server API key在 API key 字段中。
- 选择平台应用程序并点击创建平台端点按钮。
- 提供您的应用生成的 InstanceID(设备 token )。您必须扩展
FirebaseInstanceIDService
并覆盖onTokenRefresh
方法才能在您的 Android 应用程序中看到这一点。一旦你have done this ,卸载并重新安装您的应用,您的 token 应在首次启动时打印到 Android Studio 中的调试控制台。 - 点击添加端点按钮。
- 点击您的平台应用程序的 ARN 链接。
- 为您的设备选择新创建的端点,然后点击发布到端点按钮。
- 选择 JSON 消息格式,然后点击 JSON 消息生成器按钮。
- 输入测试消息并点击Generate JSON按钮
- 现在是“陷阱部分”。
SNS 生成的消息格式如下:
{
"GCM": "{ \"data\": { \"message\": \"test message\" } }"
}
正如我们之前提到的,如果没有实现接收它们的服务,data
有效负载将被忽略。我们想在不编写太多代码的情况下进行测试,因此我们应该发送一个 notification
有效载荷。为此,只需将 JSON 消息更改为:
{
"GCM": "{ \"notification\": { \"title\": \"test title\", \"body\": \"test body\" } }"
}
(有关 FCM 消息的 JSON 格式的更多信息,请参阅 FCM documentation。)
完成此操作后,请确保您的应用未在设备上运行,然后点击发布消息按钮。您现在应该会在您的设备上看到一个弹出通知。
您当然可以通过 Amazon SNS API 以编程方式完成所有这些操作,但是所有示例似乎都使用 data
负载,因此您需要牢记这一点并生成适合您使用的负载案例。
关于android - 带有 AWS SNS 的 FCM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38300450/