FCM与AWS SNS
我正在为我的Android项目使用AWS
资源,我计划使用AWS SNS
为我的项目添加推送通知服务。有几个问题困扰我很多。 除了一两个问题,我没有发现任何问题,只是解释不清。
1. AWS
支持FCM
? SNS
与GCM
工作。 但Googlebuild议使用FCM而不是GCM
。 我没有findAWS
支持FCM
。
2.即使在发送推送通知后, AWS
会将消息(或数据)存储到其数据库中?
3.我试过在SNS应用平台上放FCM API key,为什么会显示无效参数?
FCM向后兼容GCM。 在AWS上设置FCM的步骤与GCM设置步骤相同,并且至less在目前情况下,FCM与GCM和SNS在服务器端configuration方面透明地工作。
但是 ,如果您要将data
载荷发送到Android设备,则除非您实施扩展FirebaseMessagingService
的客户端服务 ,否则不会进行处理。 AWS控制台中的默认JSON消息生成器会发送data
消息,除非实现上述服务,否则这些消息将被您的应用忽略。 为了解决这个初始testing问题,您可以提供一个自定义的notification
载荷,这个载荷将被您的设备接收(只要您的应用程序不在前台)
有谷歌提供的GCM-FCM迁移说明 ,但您需要做的更改主要是在应用程序端。
您需要遵循以下步骤在您的应用上使用SNStestingGCM / FCM:
- 在SNS中创build平台应用程序 ,selectGoogle Cloud Messaging(GCM)作为推送通知平台 ,并在API密钥字段中提供您的服务器API密钥 。
- select平台应用程序,然后单击创build平台端点button。
- 提供您的应用程序生成的InstanceID( 设备令牌 )。 您必须扩展
FirebaseInstanceIDService
并覆盖onTokenRefresh
方法才能在您的Android应用程序中查看此内容。 完成此操作后 ,请卸载并重新安装应用程序,并且应在首次启动时将您的令牌打印到Android Studio的debugging控制台中。 - 点击添加端点button。
- 点击您的平台应用程序的ARN链接。
- 为您的设备select新创build的端点,然后单击发布到端点button。
- selectJSON 消息格式 ,然后单击JSON消息生成器button。
- input一条testing消息,然后点击Generate JSONbutton
- 现在来到“陷阱部分”。
由SNS生成的消息将是这样的forms:
{ "GCM": "{ \"data\": { \"message\": \"test message\" } }" }
正如我们前面提到的那样,如果没有实现接收服务的服务, data
负载将被忽略。 我们想testing而不写太多的代码,所以我们应该发送一个notification
有效载荷。 为此,只需将JSON消息更改为:
{ "GCM": "{ \"notification\": { \"text\": \"test message\" } }" }
完成此操作后,请确保您的应用程序未在设备上运行,然后点击发布消息button。 您现在应该看到在您的设备上popup通知。
你当然可以通过Amazon SNS API编程,但是所有的例子似乎都使用了data
有效载荷,所以你需要牢记这一点,并生成一个适合你的用例的有效负载。
现在,您可以转到您的Firebase控制台( https://console.firebase.google.com/ )select您的项目,点击齿轮图标并select项目设置,然后点击云消息选项卡…
您将看到旧版服务器密钥,即GCM API密钥,您将可以select生成FCM版本的新服务器密钥
SNS将接受这两个版本,但他们的菜单选项仍然在GCM下进行分类
以下图片供您参考:
请注意,您可以“意外”删除您的服务器密钥,但传统服务器密钥不可删除。 另外,如果你点击添加服务器密钥button,你会得到一个新的服务器密钥,在第一个,没有警告! …好的工作谷歌;)
只是附加说明Nathan Dunn的答案:添加声音使用下面的JSON消息
{ "GCM": "{ \"notification\": { \"text\": \"test message\",\"sound\":\"default\" } }" }