FCM与AWS SNS

我正在为我的Android项目使用AWS资源,我计划使用AWS SNS为我的项目添加推送通知服务。有几个问题困扰我很多。 除了一两个问题,我没有发现任何问题,只是解释不清。

1. AWS支持FCMSNSGCM工作。 但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:

  1. 在SNS中创build平台应用程序 ,selectGoogle Cloud Messaging(GCM)作为推送通知平台 ,并在API密钥字段中提供您的服务器API密钥 。
  2. select平台应用程序,然后单击创build平台端点button。
  3. 提供您的应用程序生成的InstanceID( 设备令牌 )。 您必须扩展FirebaseInstanceIDService并覆盖onTokenRefresh方法才能在您的Android应用程序中查看此内容。 完成此操作后 ,请卸载并重新安装应用程序,并且应在首次启动时将您的令牌打印到Android Studio的debugging控制台中。
  4. 点击添加端点button。
  5. 点击您的平台应用程序的ARN链接。
  6. 为您的设备select新创build的端点,然后单击发布到端点button。
  7. selectJSON 消息格式 ,然后单击JSON消息生成器button。
  8. input一条testing消息,然后点击Generate JSONbutton
  9. 现在来到“陷阱部分”。

由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\" } }" }