AWS SNS – 推送GCM显示为从Cloudwatch发送但未在移动设备中收到

我正在从自定义推送通知迁移到AWS SNS。 我做了以下。

  • 配置AWS SNS主题
  • 创建平台应用程序
  • 创建了端点
  • 已终止平台应用程序的端点

我正在尝试使用Ruby的’publish’API推送通知的最后一步。 我收到message_id作为回复。 它还会在CloudWatch中记录成功/交付。 但是设备中没有收到Push。

设备有效设备具有设备已安装应用程序的有效推送令牌。

我试过的消息格式如下

{"GCM"=>{"data"=>"{\"message\":\"message\",\"url\":\"url\"}"}, :default=>"default"} 

SNS发布API语法

 client.publish({target_arn: endpoint_arn, message: message.to_json, subject: "SNS test", message_structure: :json}) 

仅供参考,在将此标记为任何其他问题的副本之前,请注意我已经提及了之前的所有答案,没有任何帮助。 因此,我正在筹集一个新的。

我的消息形成有问题。 我通过调试android来解决它。 Push到达了设备,但它没有达到预期的格式。 因此推送未在设备中显示。 我在送

 {"GCM"=>{"data"=>"{\"message\":\"message\",\"url\":\"url\"}"}, :default=>"default"} 

但Android系统在我的消息中期待“徽章”和其他一些键。 我试过了

  {:default=>"default", :GCM=>"{\"data\":{\"message\":\"test\",\"url\":\"http://sofzh.miximages.com/android/cover_74.gif\",\"registration_ids\":\"arn:aws:sns:us-****-1:*********7:endpoint/GCM/gs*****_gcm/*********************\",\"badge\":\"10\",\"vol\":\"128\",\"issue\":\"10\",\"journal_name\":\"gsaapg\",\"abbr\":\"aapg\"},\"collapse_key\":\"New Article badge\"}"} 

现在它按预期工作。

这个特殊的JSON可能并不适合所有人。 但是这个问题的原因是消息JSON不是移动应用程序的预期格式。 这可能对面临类似问题的人有所帮助。