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

使用AWS SNS向GCM发送仅通知有效负载

戚建德
2023-03-14

我正在尝试通过AWS SNS向GCM发送移动推送通知。根据最新的GCM 3.0留档,其中可能包括“通知”有效负载或“数据”有效负载(或两者兼而有之)。如果您发送通知有效负载,那么GCM将负责为您在最终用户设备上显示通知。

使用Amazon SNS控制台,我尝试发送仅通知有效负载,但遇到以下错误:

无效参数:消息原因:协议GCM的通知无效:json消息中需要数据密钥(服务:AmazonSNS状态码:400;错误代码:无效参数)

我要发送:

{
  "GCM":"{\"notification\":{\"title\":\"Test Message\"}}"
}

我怀疑这可能是SNS仍然符合GCM以前版本的问题,因此它需要一个“数据”密钥,但我不确定。其他人有类似的问题或者有过类似的经历吗?谢谢!

编辑:为了澄清,我想向GCM发送一个通知有效载荷,并让它自动向用户显示一个警报,如文档中所述。现在,我开始怀疑SNS是否将通知有效负载转发到设备。

共有1个答案

袁良弼
2023-03-14

为了回答我自己的问题,我在AWS论坛上获得了以下支持:

你是对的,SNS目前不支持GCM的“通知”有效负载类型,如其留档中所述。SNS仅支持初始“数据”有效负载类型,但我们正在积极研究支持“通知”类型的解决方案。与此同时,“数据”有效负载的工作方式相同,除了客户端应用程序像过去一样负责处理数据消息

因此,在SNS支持GCM通知有效负载之前,您必须通过扩展类< code>GcmListenerService并覆盖方法< code>onMessageReceived来自己处理通知的显示。

2015年10月更新:SNS似乎已经实现了对GCM通知有效载荷的支持。如果同时包含“数据”和“通知”有效载荷,“通知”将优先。我只在SNS上观察到这种行为,但找不到任何AWS博客/文章宣布这一点。

 类似资料:
  • 我正在工作的谷歌Chrome推送通知,我正在尝试发送有效负载到谷歌Chrome工作者,但我不知道我如何接收这个有效负载。 我有一个API可以在数据库中创建和保存通知,我需要通过发送值,并在worker.js上接收 这是我的工作人员。JS 我就是这么叫GCM的 我试图获取,但这是未定义的。 有人有什么想法或建议吗?

  • 我需要向多个设备发送GCM通知。在这里,我制作了PHP代码以从MySql获取注册ID数组,并尝试向多个设备发送通知,但这里有一些问题。 我的PHP代码:

  • 问题内容: 我正在关注http://javapapers.com/android/google-cloud-messaging-gcm-for-android- and-push-notifications/ 吗?通过GCM发送推送通知。一切正常,但是,我只能将推送通知发送到一台设备。注册另一台设备将替换先前设备的注册ID。我在http://javapapers.com/android/andro

  • 问题内容: 我只想知道如何确定在无提示推送中要执行的操作: 这是我发送给客户的: 现在的问题是,当我添加以确定静默推送是为了让“订单更新”显示警报通知时。 问题答案: 有一些选择!让我们花点时间了解所有不同的有效负载及其用法。 简单有效载荷 显示在通知中心:是 唤醒应用以执行后台任务:否 带有自定义通知声音的有效负载 显示在通知中心:是 唤醒应用以执行后台任务:否 :在您的应用程序包中添加自定义通

  • 如何使用Firebase向我的应用程序的所有注册用户发送推送通知?我在纪录片中搜索了api,但没有找到任何有用的东西。

  • 我有一个包含用户名数据库的服务器。我还有一个Android应用程序,用户可以在服务器数据库中注册自己的用户名,也可以在服务器的GCM部分注册设备。 我目前正在服务器代码中使用GCM演示,它将多播一个推送通知到每个注册的设备。但是,我希望它能够将推送通知发送给某些用户,而不是每个注册的GCM设备。 我的第一个想法是将数据库中的每个用户与其GCM注册表关联起来。这样行吗?我读过一些关于regID更改或