1

私はとても苦手です。都市飛行船でデバイス ID の php 配列に送信しようとしています。ここにある最初の例を使用しています。すべてが動作し"audience"=>"all"ます。登録されたすべてのデバイスがヒットします。たくさんのデバイス ID が含まれているデータベースのクエリを作成し、それらのデバイス ID に送信する必要があります。"audience"=>"all" を何に変更すればよいのでしょうか。私はすべてを試しました!

リンクが壊れた場合のコードは次のとおりです。

<?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);
?>
4

3 に答える 3

1

都市飛行船のヘルプセンターから、これに対する可能な解決策を見つけました...彼らはこれを提案しています。そして、それは私のために働いています。

1 回の要求で複数のデバイス トークンまたは APID に送信できます。新しい API v3 を使用して、リクエストをバッチ処理することをお勧めします。これを行うには、いくつかの方法があります。

1) 1 つのペイロードで複数のデバイスに送信する

curl -v -X POST -u "<AppKey>:<MasterSecret>" -H "Content-type: application/json" -H "Accept: application/vnd.urbanairship+json; version=3;" --data '{"audience" : {"OR": [{"device_token":"<DeviceToken1>"}, {"device_token":"<DeviceToken2>"}, {"device_token":"<DeviceToken3>"}]}, "notification" : {"alert" : "Hello iOS devices!"}, "device_types" : ["ios"]}' https://go.urbanairship.com/api/push/

また

2) 複数のペイロードを 1 つのバッチにまとめる

curl -v -X POST -u "<AppKey>:<MasterSecret>" -H "Content-type: application/json" -H "Accept: application/vnd.urbanairship+json; version=3;" --data '[{"audience": {"device_token": "<DeviceToken1>"}, "notification": {"alert": "Hello, I was sent along with a batch of other pushes!"}, "device_types": ["ios"]}, {"audience": {"device_token": "<DeviceToken2>"}, "notification": {"alert": "I was also sent with a batch of other pushes!"}, "device_types": ["ios"]}, {"audience": {"device_token": "<DeviceToken3>"}, "notification": {"alert": "Me three!"}, "device_types": ["ios"]}]' https://go.urbanairship.com/api/push/

于 2014-01-25T11:58:36.287 に答える
0

Urban Airship の PHP 2 ライブラリに切り替えて、個々のデバイス トークンに送信できるようになりました。また、配列からトークンを読み取り、配列の値をターゲットとして割り当てることもできました。バージョン 2 はこちらにあります

于 2013-12-09T19:57:27.363 に答える