AWS SNS发布的消息未被推送到设备

时间:2016-06-27 10:17:31

标签: php push-notification google-cloud-messaging aws-sdk amazon-sns

我尝试使用AWS SNS作为运行我自己的向iOS和Android应用发送推送通知服务的替代方案。我从GCM开始,所以我在SNS中创建了一个GCM应用程序,然后添加了一个端点。

当我从AWS控制台发布消息时,它可以很好地进入设备,但是当我通过AWS PHP SDK发布时,它会返回一个messageId(所以SNS得到了消息)但是没有推送到设备。

这就是我的所作所为:

$snsclient = Aws\Sns\SnsClient::factory(array(
    "version" => "2010-03-31",
    "region" => "eu-west-1",
    "credentials" => array(
        "key" => "***********",
        "secret" => "***********"
    )
));
$publish_result = $snsclient->publish(array(
    "TargetArn" => "arn:aws:sns:eu-west-1:*********:endpoint/GCM/*******/********",
    "Message" => "MESSAGE",
    "Subject" => "SUBJECT",
));

然后导致

object(Aws\Result)#96 (1) {
  ["data":"Aws\Result":private]=>
  array(2) {
    ["MessageId"]=>
    string(36) "********************"
    ["@metadata"]=>
    array(3) {
      ["statusCode"]=>
      int(200)
      ["effectiveUri"]=>
      string(35) "https://sns.eu-west-1.amazonaws.com"
      ["headers"]=>
      array(4) {
        ["x-amzn-requestid"]=>
        string(36) "****************"
        ["content-type"]=>
        string(8) "text/xml"
        ["content-length"]=>
        string(3) "294"
        ["date"]=>
        string(29) "Mon, 27 Jun 2016 10:20:26 GMT"
      }
    }
  }
}

编辑: 我刚刚意识到,如果我将MessageStructure设置为json,然后将Message设置为' {" GCM":" {\" data \":{\& #34;消息\":\" aa \"它发送正常。"}' 发送它的问题是什么? 我应该选择哪种方式?我认为raw更好,因为它允许我使用相同的结构发送到iOS和Android(然后SNS会为我正确构建消息)...

谢谢, 约瑟夫。

1 个答案:

答案 0 :(得分:0)

详见Push Notifications to Mobile Devices Using Amazon SNS,您需要执行以下操作才能创建可接收推送通知的移动应用:

  
      
  1. 为受支持的设备和消息传递API创建应用。应用必须使用设备API向本地平台通知服务注册才能接收通知。
  2.   
  3. 使用SNS的CreatePlatformApplication函数创建应用程序的服务器端表示。
  4.   
  5. 注册设备,因为您的服务器代码通过调用SNS CreatePlatformEndpoint功能来了解它们。此函数将返回唯一标识设备的ARN(Amazon资源名称)。
  6.   
  7. 通过使用设备的ARN调用Publish功能,将消息直接发送到特定设备。
  8.   
  9. 通过调用相同的Publish函数向订阅主题的所有设备发送消息,但使用该主题的ARN。
  10.   

在给定的文档中显示了一个优秀的示例代码,其中使用了最新版本的AWS SDK for PHP,并将逐步指导您如何实施GCM。

除此之外,初学者还可以使用此引用 - What is Amazon Simple Notification Service?Getting Started with Amazon Simple Notification Service获取更多信息。