tweet

GCM でマルチキャスト メッセージ送信方法(JSON形式)、(PHP) 2013-08-27

夏ですね。お盆過ぎてもまだ暑い、、

さて、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

*) それでは、また会いましょう。

コメント

AD-parts

Shop
Bluetooth搭載
ベース基板

FACEBOOK

人気の投稿