无法从Amazon SNS接收GCM推送通知

5
我正在尝试通过PHP向安卓应用程序发送推送通知。我设置了Amazon SNS账户并创建了SNS平台,使用Google GCM API的服务器密钥。
使用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 ) ) ) )

我遵循的步骤如下:
  1. 创建了用于GCM的Google API凭证。在应用程序中使用了projectid,在Amazon平台上使用了Server key。

  2. 在AWS中创建了用户并添加具有SNS所有访问权限的策略。

  3. 在php aws api中使用了Amazon用户凭证。

  4. 为Android/GCM创建了Amazon SNS应用程序平台,并在那里使用了Google服务器密钥。

  5. 将从以上步骤获得的应用程序ARN添加到php api调用中。

  6. 在php cron中,使用从GCM收到的registration_id为设备创建AmazonEndpoint。

  7. 在Amazon端点上发布通知消息。

  8. 然后出现问题......即使在api调用中获取成功状态,仍无法接收到设备上的通知

请问有没有人能告诉我确切的步骤?我是否有遗漏的内容?

使用SNS仪表板上的手动消息发送功能,确保您的SNS/GCM设置正确。然后从那里逐步调试一步。如果失败,则向下调试一步。 - markdwhite
分享你相关的代码 - Kuldeep Dangi
JSON数据内容到底是什么? 我使用{"GCM": {"data":{"message":"blah blah"}}} - DanJGer
2个回答

3

我使用了Firebase和AWS SNS服务来从php发送消息。我按照这个视频教程https://youtu.be/iBTFLu30dSg(俄语但有英文字幕)逐步进行。现在它对我很有效,我成功地从我的php代码接收到了移动设备上的推送通知。


0

使用 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行在每个推送中都是唯一的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接