FCM 向后兼容 GCM。在 AWS 上设置 FCM 的步骤与GCM 设置程序并且(至少目前)FCM 在服务器端配置方面与 GCM 和 SNS 透明地协作。
However,如果您要发送data
发送到 Android 设备的有效负载将不会被处理,除非您实现客户端服务延伸FirebaseMessagingService
。 AWS 控制台中的默认 JSON 消息生成器发送data
消息,除非实现了上述服务,否则您的应用程序将忽略这些消息。为了解决这个问题进行初始测试,您可以提供一个自定义的notification
您的设备将接收的有效负载(只要您的应用程序不在前台)
有GCM-FCM 迁移说明由 Google 提供,但是您需要进行的更改主要是在应用程序方面。
使用 SNS 在您的应用程序上测试 GCM/FCM 需要遵循的步骤是:
- 创建一个SNS平台应用,选择 Google Cloud Messaging (GCM) 作为推送通知平台,并提供您的服务器 API 密钥 in the API key field.
- 选择平台应用程序并单击创建平台端点 button.
- 提供实例 ID (设备令牌)由您的应用程序生成。您必须延长
FirebaseInstanceIDService
并覆盖onTokenRefresh
方法在您的 Android 应用程序中查看此内容。一旦您已经这样做了,卸载并重新安装您的应用程序,您的令牌应在首次启动时打印到 Android Studio 中的调试控制台。
- 点击添加端点 button.
- 单击您的平台应用程序的 ARN 链接。
- 为您的设备选择新创建的端点,然后单击发布到端点 button.
- 选择 JSON消息格式,然后单击JSON 消息生成器 button.
- 输入测试消息并单击生成 JSON button
- 现在到了“陷阱部分”。
SNS 生成的消息的形式如下:
{
"GCM": "{ \"data\": { \"message\": \"test message\" } }"
}
正如我们前面提到的,data
如果没有实现接收有效负载的服务,则有效负载将被忽略。我们希望在不编写太多代码的情况下进行测试,因此我们应该发送notification
有效负载。为此,只需将 JSON 消息更改为:
{
"GCM": "{ \"notification\": { \"title\": \"test title\", \"body\": \"test body\" } }"
}
(有关 FCM 消息的 JSON 格式的更多信息,请参阅FCM 文档.)
完成此操作后,请确保您的应用程序未在设备上运行,然后点击发布消息按钮。您现在应该会在设备上看到弹出的通知。
当然,您可以通过 Amazon SNS API 以编程方式完成所有这些操作,但是所有示例似乎都使用data
有效负载,因此您需要记住这一点并生成适合您的用例的有效负载。