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

时间:2017-10-27 09:16:59

标签: android ruby amazon-web-services push-notification amazon-sns

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

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

我正在尝试使用'发布'来推送通知的最后一步Ruby的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})

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

2 个答案:

答案 0 :(得分:1)

GCM有效载荷格式已更新。 这对我有用。

{
"GCM": "{ \"notification\": { \"body\": \"hello....\", \"title\": \"title123\" } }"
}

答案 1 :(得分:0)

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

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

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

 {:default=>"default", :GCM=>"{\"data\":{\"message\":\"test\",\"url\":\"https://s3.amazonaws.com/mcds_fulltext/aapg/gsaapgbull/issues/74/android_hdpi/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不是移动应用程序的预期格式。这可能对面临类似问题的人有所帮助。