AWS SNS - 推送 GCM 显示为从 Cloudwatch 发送但未在移动设备中接收
Posted
技术标签:
【中文标题】AWS SNS - 推送 GCM 显示为从 Cloudwatch 发送但未在移动设备中接收【英文标题】:AWS SNS - Push for GCM showing as sent from Cloudwatch but not received in Mobile Device 【发布时间】:2017-10-27 09:16:58 【问题描述】:我正在从自定义推送通知迁移到 AWS SNS。我做了以下。
已配置 AWS SNS 主题 创建的平台应用程序 创建的端点 平台应用程序的订阅端点我正在尝试使用 Ruby 的“发布”API 推送通知的最后一步。我收到 message_id 作为响应。它还在 CloudWatch 中记录为成功/交付。但是设备没有收到推送。
设备有效 设备具有有效的推送令牌 设备已安装应用程序。
我尝试过的消息格式如下
"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)
仅供参考,在将此标记为任何其他问题的重复之前,请注意我已经参考了所有以前的答案,但没有任何帮助。因此我正在养一个新的。
【问题讨论】:
【参考方案1】:GCM 有效负载格式已更新。 这对我有用。
"GCM": " \"notification\": \"body\": \"hello....\", \"title\": \"title123\" "
【讨论】:
【参考方案2】:我的消息格式有问题。我通过使用 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 不是移动应用程序的预期格式。这可能对面临类似问题的人有所帮助。
【讨论】:
以上是关于AWS SNS - 推送 GCM 显示为从 Cloudwatch 发送但未在移动设备中接收的主要内容,如果未能解决你的问题,请参考以下文章