読者です 読者をやめる 読者になる 読者になる

【Cordova】プッシュ通知 (Google Cloud Messaging)

 

<仕組み>

GCM(Google Cloud Messageを使用します)
・サーバ(PHPで作ります)からGCMサーバにレジストレーションIDとメッセージ送信
   メッセージ送信はGoogleAPI https://android.googleapis.com/gcm/send へPOSTリクエスト送信
・GCMサーバがレジストレーションIDを元に各端末にメッセージ送信

 

 

Google Developers Consoleでプロジェクト作成
Google Cloud Messagingを有効
センダーID(プロジェクト番号)の取得(アプリに設定)
APIキーの取得(Appサーバに設定)

 

Android SDKに以下を追加

Android Support Repository

Google Repository

 

③サーバーの実装(PHP

Sample.php

define('API_KEY', 'ご自分のAPI KEY');

define('URL', 'https://android.googleapis.com/gcm/send');
$regId = "送信ターゲットの端末のレジストリID";
$data = array('registration_id' => $regId,
'collapse_key' => 'update',
'data.message' => 'Hello World');
$data = http_build_query($data, '', '&');
$header = array('Content-Type: application/x-www-form-urlencoded;charset=UTF-8',
        'Authorization: key=' . API_KEY,
        'Content-Length: ' . strlen($data));
$context = array('http' => array('method' => 'POST',
              'request_fulluri' => true,
              'ignore_errors' => true,
              'header' => implode("\r\n", $header),
              'content' => $data));
$response_body = file_get_contents(URL, false, stream_context_create($context));

 

④クライアントの実装(JS)

以下のプラグインをインストールしておいてください

cordova plugin add https://github.com/phonegap-build/PushPlugin.git
cordova plugin add cordova-plugin-device

 

var pushNotification = window.plugins.pushNotification;
pushNotification.register(onSuccess, onError, {
  "senderID": "センダーID",
  "ecb": "onNotification"
});
function onSuccess(result) {
  $("#contents").append('<li>result = ' + result + '</li>');
};
function onNotification(e) {
  e.event             //通知タイプ(registered(初回)、message、error)
  e.regid              //端末ID
  e.payload.info   //messageの場合
  e.msg               //errorの場合
};

 

⑤サーバー環境でSample.phpを実行

⇒送り先に指定した端末にメッセージが届きます!

 

 

以上です。