向城市飞艇推送发送php设备令牌数组

向城市飞艇推送发送php设备令牌数组,php,curl,notifications,urbanairship.com,Php,Curl,Notifications,Urbanairship.com,我很烂。我正试图用城市飞艇发送设备id的php数组。我使用的是发现的第一个示例。一切正常,有“观众”=>“所有人”。每个注册的设备都会被击中。我需要查询一个数据库,其中有一堆设备id,并发送到这些设备id。我应该将“观众”=>“全部”更改为什么,以便我可以这样做。我什么都试过了 以下是链接断开时的代码: <?php define('APPKEY','XXXXXXXXXXXXXXX'); // Your App Key define('PUSHSECRET', 'XXXXXXXXXXXX

我很烂。我正试图用城市飞艇发送设备id的php数组。我使用的是发现的第一个示例。一切正常,有
“观众”=>“所有人”
。每个注册的设备都会被击中。我需要查询一个数据库,其中有一堆设备id,并发送到这些设备id。我应该将“观众”=>“全部”更改为什么,以便我可以这样做。我什么都试过了

以下是链接断开时的代码:

<?php
 define('APPKEY','XXXXXXXXXXXXXXX'); // Your App Key
 define('PUSHSECRET', 'XXXXXXXXXXXXXXX'); // Your Master Secret
 define('PUSHURL', 'https://go.urbanairship.com/api/push/');

 $contents = array();
 $contents['badge'] = "+1";
 $contents['alert'] = "PHP script test";
 $contents['sound'] = "cat.caf";
 $notification = array();
 $notification['ios'] = $contents;
 $platform = array();
 array_push($platform, "ios");

 $push = array("audience"=>"all", "notification"=>$notification, "device_types"=>$platform);

 $json = json_encode($push);

 $session = curl_init(PUSHURL);
 curl_setopt($session, CURLOPT_USERPWD, APPKEY . ':' . PUSHSECRET);
 curl_setopt($session, CURLOPT_POST, True);
 curl_setopt($session, CURLOPT_POSTFIELDS, $json);
 curl_setopt($session, CURLOPT_HEADER, False);
 curl_setopt($session, CURLOPT_RETURNTRANSFER, True);
 curl_setopt($session, CURLOPT_HTTPHEADER, array('Content-Type:application/json', 'Accept: application/vnd.urbanairship+json; version=3;'));
 $content = curl_exec($session);
 echo $content; // just for testing what was sent

 // Check if any error occured
 $response = curl_getinfo($session);
 if($response['http_code'] != 202) {
     echo "Got negative response from server, http code: ".
     $response['http_code'] . "\n";
 } else {

     echo "Wow, it worked!\n";
 }

 curl_close($session);
?>

这取决于您试图发送到的设备操作系统。通过此处的文档:

您需要将正确的设备类型设置为其相应的ID。例如:

安卓:

"audience" : {
    "apid" : "b8f9b663-0a3b-cf45-587a-be880946e880"
}
ios:


切换到城市飞艇的PHP2库,我可以向单个设备发送令牌。我还能够从数组中读取令牌,并将数组值指定为目标。找到了版本2。

我从城市飞艇帮助中心找到了一个可能的解决方案。。。他们建议这样做。这对我很有用

您可以在一个请求中向多个设备发送令牌或APID。我建议使用我们新的API v3并批量处理您的请求。有几种方法可以做到这一点:

1) 在一个有效负载中发送到多个设备

curl-v-X POST-u:“-H”内容类型:application/json“-H”Accept:application/vnd.urbanairship+json;version=3;“--data'{“观众”:{“或”:[{“设备令牌”:“},{“设备令牌”:“},{“设备令牌”:“}”,通知:{“警报”:“你好,iOS设备!”},“设备类型”:[“iOS”}”https://go.urbanairship.com/api/push/

2) 将多个有效载荷放在一个批次中


curl-v-X POST-u:“-H”内容类型:application/json“-H”Accept:application/vnd.urbanairship+json;version=3;“--data'[{“观众”:{“设备令牌”:“}”,通知:{“警报”:“您好,我是和一批其他推送一起发送的!”},“设备类型”:[“ios”},{“观众”:“{“设备令牌”:“}”,通知:{“警报”:“我还被发送了一批其他推送!”},“设备类型”:[“ios”]},{“观众”:{“设备令牌”:“}”,通知:{“警报”:“我三个!”},“设备类型”:[“ios”]}]' https://go.urbanairship.com/api/push/

无论出于何种原因,该格式也不起作用。我最终使用了Urban Airship的PHP 2库。它有很多额外的依赖项需要安装,但马上就能工作。谢谢!
"audience" : {
    "device_token" : "C9E454F6105B0F442CABD48CB678E9A230C9A141F83CF4CC03665375EB78AD3A"
}