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 发送但未在移动设备中接收的主要内容,如果未能解决你的问题,请参考以下文章

使用亚马逊 sns 未收到 GCM 推送

未收到来自 Amazon SNS 的 GCM 推送通知

AWS SNS 推送通知说明

AWS SNS 推送通知

Amazon SNS GCM 推送通知中没有标题

推送通知在 Amazon SNS 中不起作用