さて、PHPで
APサーバからGCM送信時に、マルチキャスト メッセージ(複数配信、JSON形式)
する方法です。最大= 1,000件までみたいですけど。
ぐぐると単発(テキスト形式)はあるけど、マルチは少なかった気がしますので、メモ。
GCMの申請、register(登録IDの確定)などは、他のサイトをご参考ください。
送信処理のみ記載です。
$apiKeyは、取得したキー使ってください、curl使ってますけど。
下記はファイルから、複数ID取得してます。($ROOT/dat)
postするパラメータなどは、下記のサイト様など参照頂ければと思います。
(いろいろ設定できるみたいです。)
===============================
<?php
$url = 'https://android.googleapis.com/gcm/send';
$message = 'Hello, test-GCM!!';
$apiKey = "xxxx";
//heaer
$header = array(
'Content-Type: application/json',
"Authorization: key={$apiKey}",
);
$registerDir = $_SERVER['DOCUMENT_ROOT'] . "/dat";
$fileList = scandir($registerDir);
// $ict =count($fileList);
$i_reg=0;
$items = array();
foreach($fileList as $s_fnm){
if(!is_dir($s_fnm)){
$regId = file_get_contents($registerDir . "/{$s_fnm}");
$items[$i_reg] = $regId;
$i_reg += 1;
}
}
// print(json_encode($items) );
//post-data
$post_list = array(
'collapse_key' => 'update',
'time_to_live' => 108,
'data' => array('message' => $message),
'registration_ids' => $items,
);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FAILONERROR, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($post_list) );
curl_setopt($curl, CURLOPT_TIMEOUT, 5);
$ret = curl_exec($curl);
var_dump($ret);
?>
===============================
実行すると、複数push配信できるはず!!(たぶん)
*)参考までに、送信の前の、登録ID保存。(Androidからの送信ID保存)
===============================
<?php
if (!isset($_POST['regId'])){
print("-1");
exit;
}
$registerDir = $_SERVER['DOCUMENT_ROOT'] . "/dat";
$regId = $_POST['regId'];
$filename = md5($regId). ".txt";
file_put_contents($registerDir."/{$filename}", $regId);
?>
===============================
ご参考のサイトさま:
http://www.techdoctranslator.com/android/guide/google/gcm/gcm
http://www.atmarkit.co.jp/ait/articles/1302/12/news029.html
*) それでは、また会いましょう。
0 件のコメント:
コメントを投稿