更新日: 2015-12-17 (木) 01:04:35 (252d)

:Android

Android GCMでメッセージを送る

Androidでプッシュ通知でショートメッセージをおくる仕組みは以前はC2DMというものでしたが、2012年6月26日にデプリケイトされGCM(Google Cloud Messaging for Android)というものに変わりました。

まだまだ途中ではありますが、やってみた経過を書いておきます。

まずは、GCMを利用する準備で、GCM sender IDというものを入手します。

下記のページを参考にして取得します。
http://developer.android.com/guide/google/gcm/gs.html

つまづきやすいポイントを書いておくと

https://code.google.com/apis/console/

にアクセスして、gcmをONにすると、プロジェクトが作れ、そのプロジェクトの後につく番号が、sender IDです。

例)下記でいえば9779407********、***は伏せ字ですが整数です。
https://code.google.com/apis/console/#project:9779407********

左のメニューのAPI Accessをクリックすると

Key for browser apps (with referers)

とあるところの

例)*****は伏せ字ですが、アルファベットの羅列です。
API key:
AIzaSyBYyErqLDowHFlZ***********************

が、Webアプリケーション側で利用するAPIキーです。

とりあえず、sender IDとAPIキーは必要になります。

では、次にアプリを作りましょう。
下記のチュートリアルを参考にします。
http://developer.android.com/guide/google/gcm/demo.html

アプリを一から作るのは大変なので、Googleさんがサンプルを用意してくれているのをコピペで作ってみます。
AndroidManifest.xmlとか結構作るの気を使いますよね~。
よい見本にもなります。

SDKマネージャーで、

Extras > Google Cloud Messaging for Android Library

をインストールします。

すると、

Android SDKのディレクトリ以下に/extras/google/gcm/samples/gcm-demo-client/

にサンプルアプリがありますので、これを使ってみます。

/src/com/google/android/gcm/demo/app/CommonUtilities.java

を開くと、ここに定数で先ほどのsender IDとサーバー側アプリケーションのURLを入れる場所があります。

//例)サーバー側アプリケーションのURLを変更
static final String SERVER_URL = "http://****.php";

//例)Sender IDを変更
static final String SENDER_ID = "9779407********";

というように変更します。

これを、エミュレーターで実行すると

From GCM:error(ACCOUNT_MISSING)

となってしまいます。

ふぇぇーとなりますが、これはGoogleのアカウントがこのエミュレーターにアサインされていないからでした。
Googleアカウントがある実機などで試すと、うまくいきます。
下記のような画面になります。

gcm-avd-home-auto-reg.png

GCMに無事登録されたようです!

デバッガなどでregIDという値をコピペしておきます。

regIDは大変長いです。

例)regIDの例 ***は伏せ字です 実際はもっと長いアルファベットの羅列です
'APA91bHqwcC6ztIHr2TZcr2Fmp_eWcqS0E****************************'

そして、Webサーバー側のアプリケーションを用意します。
今回は、下記でご紹介のあったPHPのサンプルを流用させて頂きます。有難うございました。
http://d.hatena.ne.jp/azukinohiroki/20120628/1340868610

<?php

$url = 'https://android.googleapis.com/gcm/send'; 

$registration_id = 'APA91bHqwcC6ztIHr2TZcr2Fmp_eWcqS0E*********************'; //regIDをここに記述します
$message = 'Hello, GCM!!';

$header = array(
  'Content-Type: application/x-www-form-urlencoded;charset=UTF-8',
  'Authorization: key=AIzaSyBYyErqLDowHFlZ***********************', //API keyはここ
);
$post_list = array(
 'registration_id' => $registration_id,
 'collapse_key' => 'update',
 'data.message' => $message,
);
$post = http_build_query($post_list, '&');

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$ret = curl_exec($ch);

var_dump($ret);

?>

上記をURLから実行すると、IDが帰ってきて、Android端末にもメッセージが届けば成功です!
とりあえずはやったー(^_^)

string(38) "id=0:13433901****************" 

選択肢 投票
このページの情報は役に立った 11  
このページの情報は役に立たなかった 1  
どちらでもない 1  
このページが参照された数
Total: 29253, 今日: 6, 昨日: 0

添付ファイル: filegcm-avd-home-auto-reg.png 956件 [詳細]

でじうぃきは神奈川県横浜市の位置情報システム・スマホアプリ開発の株式会社オンラインコンサルタントが運営しています。
投稿
トップ   このページを編集する 再編集不可にする 差分 バックアップ 添付 複製 名前変更 リロード   新しいページを作る 一覧 検索する 最新の更新   ヘルプ   最終更新のRSS
Last-modified: 2015-12-17 (木) 01:04:35 (252d)