未收到来自 Amazon SNS 的 GCM 推送通知
Posted
技术标签:
【中文标题】未收到来自 Amazon SNS 的 GCM 推送通知【英文标题】:Not receiving GCM push notification from Amazon SNS 【发布时间】:2015-07-17 14:06:32 【问题描述】:我正在尝试通过 php 向 android 应用发送 推送通知。 我设置了 amazon sns 帐户并使用 GCM API 的 Google 服务器密钥 创建了 SNS 平台。
使用 AWS 凭证,我编写了一个 cron,它从数据库读取通知消息并使用 amazon php api 发布到 sns 服务。 我在 cron 中获取 Amazon 端点,我在该端点上发布通知。
我收到 pass 状态和 requestid 通知。但实际通知未在设备上接收。
Array ( [data] => Guzzle\Service\Resource\Model Object ( [structure:protected] => [data:protected] => Array ( [MessageId] => ac9e1d0c-43a4-5d1a-833d-50c94465421d [ResponseMetadata] => Array ( [RequestId] => c1da8997-2e32-50d0-a092-c45229f36fd7 ) ) ) )
我遵循的步骤:
为 GCM 创建了 google API 凭据。在应用程序中使用 projectid 和 Amazon 平台的服务器密钥
在 aws 中创建用户并添加对 sns 具有所有访问权限的策略
在 php aws api 中使用了亚马逊用户凭据
从 android/GCM 创建 amazon sns 应用平台,并在那里使用 google server key。
将从上述步骤收到的应用程序 ARN 添加到 php api 调用。
在 php cron 中,使用从 GCM 接收到的 registration_id 为设备创建 AmazonEndpoint。
在亚马逊端点上发布通知消息。
卡住了......即使在 api 调用中获得成功状态后也没有在设备上收到通知
谁能告诉我具体的步骤?我错过了什么吗?
【问题讨论】:
使用该工具在 SNS Dashboard 上发送手动消息,以确保您的 SNS/GCM 设置正确。然后尝试从那里一次调试一个步骤。或者,如果失败了,就降级。 分享你的相关代码 JSON 数据内容究竟是什么?我使用 "GCM": "data":"message":"blah blah" 【参考方案1】:我使用 Firabase 和 AWS SNS 服务从 php 发送。我是按照这个视频教程https://youtu.be/iBTFLu30dSg一步一步做的(俄语但有英文字幕)。它现在对我来说效果很好,我成功地从移动设备上的 php 代码收到推送通知
【讨论】:
【参考方案2】:使用 json 来表达主题,例如:
"default": "Msg test from sns",
"GCM": "\"data\":\"id\":\"161223182046\",\"badge\":1,\"message\":\"Msg test from sns\",\"title\":\"test\",\"_event\":\"created\":1482547772"
对于端点退出默认行:
"GCM":"\"data\":\"id\":\"161223182046\",\"badge\":1,\"message\":\"Msg test from sns\",\"title\":\"test\",\"_event\":\"created\":1482547772"
其中id
和_event.created
行对于每次推送都是唯一的。
【讨论】:
以上是关于未收到来自 Amazon SNS 的 GCM 推送通知的主要内容,如果未能解决你的问题,请参考以下文章