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

时间:2015-08-07 17:18:22

标签: android amazon-web-services google-cloud-messaging amazon-sns

我正在尝试通过AWS SNS向GCM发送移动推送通知。根据最新的GCM 3.0 documentation,可以包括"通知"有效载荷或数据"有效载荷(或两者)。如果您发送通知有效负载,则GCM将负责为您显示最终用户设备上的通知。

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

  

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

我发送:

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

我怀疑这可能是SNS仍然符合以前版本的GCM的一个问题,因此它需要一个"数据"关键,但我不确定。是否有其他人有类似的问题或有任何经验?谢谢!

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

1 个答案:

答案 0 :(得分:12)

为了回答我自己的问题,我在他们的论坛上从AWS Support收到了以下内容:

  

你是对的,SNS目前不支持GCM的“通知”   有效负载类型,如其文档中所述。 SNS支持   最初的“数据”有效负载类型,但我们正积极致力于   支持“通知”类型的解决方案。在此期间,   除了客户端应用程序负责之外,“data”有效负载的工作方式相同   处理过去的数据消息。

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

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