【发布时间】:2016-06-27 10:17:31
【问题描述】:
我正在尝试使用 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\": { \"message\": \"aa\" } }"}',它会发送美好的。 将其原始发送有什么问题? 我应该选择哪种方式?我认为 raw 更好,因为它允许我使用相同的结构发送到 iOS 和 Android(然后 SNS 会为我正确构建消息)...
谢谢, 约瑟夫。
【问题讨论】:
-
感谢@john-rotenstein 的编辑。这对我有用,并为我节省了大量的调查时间。
标签: php push-notification google-cloud-messaging aws-sdk amazon-sns