当前位置: 首页 > 知识库问答 >
问题:

带AWS SNS的FCM

万德海
2023-03-14

我正在为我的android项目使用AWS资源,我正计划为我的项目添加推送通知服务AWS SNS。我没有发现任何关于这些的问题,除了一两个,但解释不清楚。

1.AWS支持FCM吗?SNS使用GCM。但是Google建议使用FCM而不是GCM。我没有找到AWS支持FCM

2.AWS是否在发送推送通知后将消息(或数据)存储到数据库中?

3.我试着在SNS应用平台上放FCM api密钥,结果显示参数无效,为什么?

共有1个答案

夏建弼
2023-03-14

FCM与GCM是向后兼容的。在AWS上设置FCM的步骤与GCM设置过程相同,并且(至少目前)FCM在服务器端配置方面透明地与GCM和SNS一起工作。

但是,如果将数据有效负载发送到Android设备,除非实现扩展FireBaseMessagingService的客户端服务,否则不会处理这些负载。AWS控制台中默认的JSON消息生成器发送data消息,除非实现了上述服务,否则应用程序将忽略这些消息。为了在初始测试中解决这个问题,您可以提供一个自定义通知有效负载,它将被您的设备接收(只要您的应用程序不在前台)

Google提供了GCM-FCM迁移说明,但是您需要进行的更改主要是在应用程序端。

在使用SNS的应用程序上测试GCM/FCM需要遵循的步骤如下:

  1. 在SNS中创建一个平台应用程序,选择Google Cloud Messaging(GCM)作为推送通知平台,并在API key字段中提供服务器API key。
  2. 选择平台应用程序并单击Create Platform endpoint按钮。
  3. 提供应用程序生成的InstanceID(设备令牌)。必须扩展FirebaseInstanceIdService并重写OnTokenRefresh方法,才能在Android应用程序中看到这一点。完成此操作后,卸载并重新安装应用程序,并且在首次启动时将令牌打印到Android Studio中的调试控制台。
  4. 单击添加终结点按钮。
  5. 单击平台应用程序的ARN链接。
  6. 为设备选择新创建的endpoint,然后单击发布到endpoint按钮。
  7. 选择JSON消息格式,然后单击JSON消息生成器按钮。
  8. 输入测试消息并单击Generate JSON按钮
  9. 现在是“gotcha部分”。

由SNS生成的消息的形式如下:

{
"GCM": "{ \"data\": { \"message\": \"test message\" } }"
}
{
"GCM": "{ \"notification\": { \"title\": \"test title\", \"body\": \"test body\" } }"
}

一旦你完成了这一点,确保你的应用程序没有运行在设备上,并点击发布消息按钮。您现在应该看到设备上弹出一个通知。

当然,您可以通过Amazon SNS API以编程方式完成所有这些工作,但是所有示例似乎都使用data有效负载,因此您需要记住这一点,并生成适合于您的用例的有效负载。

 类似资料:
  • 我有一个报告,我想在其中显示页脚,但不想显示页眉部分-在摘要带。我可以通过选中“带有页眉和页脚的摘要”来显示两者或不显示。

  • 现在我的问题是,如何在自定义的而不是自定义的中重写方法?我没有在这里公布我的代码,因为它与链接的代码本质上是相同的,只是我需要为子创建一个自定义的来代替,这样它就可以按照“pptang”的答案所述进行正确的度量。 否则,有没有比在第二个RecyclerView中使用1个RecyclerView更好的方法?只能有1个RecyclerView使用上述列表和每个中唯一项的网格填充活动/片段吗?

  • 2)如果困境是真的,为什么事情要这样设置?谷歌计划反对TabHost和基于标签的多活动方法吗?多活动方法有什么不愉快的地方吗? 3)如果继续支持这两种方法,它们的优缺点是什么?如果我使用ActionBar+片段,我会遇到任何困难吗?例如,当我想让我的一个选项卡屏幕滑过/弹出一个额外的屏幕/片段时,我会不会在ActionBar中切换到/从选项卡中切换到选项卡?

  • 问题内容: 之间有什么区别 和 我都尝试过,但似乎都可以,但是我是在问,以防万一我需要小心(例如,%以外的单位等)。 问题答案: 这完全是关于HTML标记的真实有效性。这是W3C(WWW联盟)的工作目的。许多事情可能都在HTML中起作用,但是必须进行验证才能被网络浏览器更仔细地识别。您甚至可以在开头和结尾处省略and 标记,但是完全不建议这样做,没有人这样做,它被视为“错误代码”。 因此,将它们放

  • 根据Spring网站上的这个教程,我知道了如何使用Stomp和Spring4建立一个基于WebSocket的应用程序。在客户端,我们有: 在服务器端,控制器中有以下内容: 现在,我明白了确保如果消息发送到目标,那么将调用方法。由于订阅了,将消息发送回。 那么,有什么方法可以用Spring4、SockJS和没有跺脚的情况下做到这一点呢?还是Spring4WebSocket只支持stomp?

  • 我正在尝试将vaadin与spring(没有Spring Boot)和基于java注释的spring部分配置结合起来。 自动连接似乎适用于vaadin ui部分,但不适用于“自定义ui类”(例如,“公共类LoginScreen扩展自定义组件”)。我在SysOut上得到一个NPE或一个空对象。 此外,我注意到“@ComponentScan(base Packages={"net.myapp"})”没