GCMプッシュ通知を利用するネイティブアプリケーションを開発するための事前準備
GCMプッシュ通知を利用するネイティブアプリケーションを開発するための事前準備として以下を行ってください。
Google Developers Consoleでプロジェクトを作成してください。
作成したプロジェクトを選択し、GCMを有効にしてください。
API Keyを作成してください。
GCM対応のAndroidアプリを開発してください。
注) GoogleCloudMessaging.register()に渡すSENDER_IDは、作成したプロジェクトの「Project Number」を指定。
API keyをプッシュサーバに登録してください。
詳細は、Google Developers Consoleを参照してください。
GCMプッシュ通知を利用するネイティブアプリケーションの開発
GCMプッシュ通知を利用するネイティブアプリケーション向けのAPIはJavaで提供します。IMAPSプッシュ通知を利用するネイティブアプリケーション向けのAPIと同様に準備してください。
GCMプッシュ通知を利用するネイティブアプリケーションの開発には、以下の作業が必要です。
Googleの公式HPに公開されている手順(http://developer.android.com/google/play-services/setup.html) に従い、下記の設定を実施
Install the Google Play Services SDK
Set Up a Project that Uses Google Play Services
Android Support Library(revision 18以降のandroid-support-v4.jar)をアプリケーションプロジェクトのクラスパスに含める
マニフェストファイルの修正
プッシュクライアント設定ファイルの作成
プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成
GooglePlay開発者サービスのインストール
1. マニフェストファイルの修正
Wi-Fi機能の状態を参照(WiFi MACアドレスを利用)するため、以下のパーミッションを設定してください。
android.permission.ACCESS_WIFI_STATE
IMEIを取得するため、以下のパーミッションを設定してください。IMEI(International Mobile Equipment Identifier)は、端末識別番号です。
android.permission.READ_PHONE_STATE
GCMからメッセージを受信するため、以下のパーミッションを設定してください。ここで指定したアプリケーションのみが GCM メッセージを受信できます。[package]部分は作成したアプリのパッケージ名に置き換えてください。Android 4.1 以上 (SdkVersion 16 ) をターゲットとしている場合は必須ではありません。
<permission android:name="[package].permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="[package].permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
メッセージを受信したらスリープを解除するため、以下のパーミッションを設定してください。
<uses-permission android:name="android.permission.WAKE_LOCK" />
インターネットに接続するため、以下のパーミッションを設定してください。
<uses-permission android:name="android.permission.INTERNET" />
Googleアカウントを取得するため、以下のパーミッションを指定してください。
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
サービスとして、com.fujitsu.imaps.push.gcm.GcmIntentServiceを指定してください。
レシーバーとして、com.fujitsu.imaps.push.gcm.GcmBroadcastReceiverを指定してください。
... <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<permission android:name="[package].permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="[package].permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<application ...> ... <receiver android:name="com.fujitsu.imaps.push.gcm.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="[pacakge]" />
</intent-filter>
</receiver>
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<service android:name="com.fujitsu.imaps.push.gcm.GcmIntentService" />
</application> ...
2. プッシュクライアント設定ファイルの作成
プッシュハンドラに渡すパラメータを、プッシュクライアント設定ファイル(push.properties)に設定します。プッシュクライアント設定ファイルについては、「付録G プッシュクライアント設定ファイル」を参照してください。
3. プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成
プッシュクライアント設定ファイル情報は、プッシュハンドラを利用する前に設定してください。
以下はプッシュクライアント設定ファイルの設定例です。
// プッシュサーバとの接続先をプッシュクライアント設定ファイルに設定する push.ServerAddress=https://example.com/push/ push.SelfCertificate = true push.gcm.SenderID=1234567890 // SENDER_IDは、Googleの開発者向けのWebサイトで入手
以下はプッシュハンドラ初期化処理の例です。
// com.fujitsu.imaps.push.gcm.GcmRegisterによるプッシュハンドラの初期化 GcmRegister gcm = GcmRegister.getInstance(Activity.this); gcm.register();
4.GooglePlay開発者サービスのインストール
GCMプッシュ通知を受信するためには、GooglePlay開発者サービス(4.4.52以降)が必要です。GooglePlay開発者サービスがインストールされていない場合、プッシュハンドラ初期化処理が失敗し、GCMのプッシュ通知を受信できません。GooglePlay開発者サービスはGoogle Playから入手できます。
注意
GooglePlay開発者サービスは、開発したアプリケーションを実行するAndroidへインストールする必要があります。
Export Android Applicationを行う場合
Export Android Applicationを行う場合は、Eclipseで以下の設定をおこないます。
Window → Preferences
Androidを展開し、Lint Errorを選択します
Lint Error Checking Run full error check when exporting app and abort if fatal erros are foundのチェックを外します
注意
上記は、全てのプロジェクトに反映されます。パッケージング後は、必要に応じて設定を元に戻してください。
ログ出力を行う場合、「7.5.5 ログ出力のカスタマイズ」を参照してください。
認証の設定は、「7.5.6 認証クラスの定義」を参照してください。
拡張データを指定する場合は、「7.5.7 拡張データの指定」の指定を参照してください。
エラー通知受け取りを行う場合、「7.5.9 GCMプッシュの処理結果受け取り」を参照してください。
参考
GCMプッシュハンドラ初期化処理(GcmRegister.register)では、GCMとの通信とIMAPSサーバとの通信を伴います。そのため、開発中に以下の環境でGCMプッシュの動作確認を行いたい場合、
・IMAPSサーバがイントラネットに配置されており、イントラネット内WiFiで接続する環境
・さらに、イントラネット内からGCMへのアクセスが(ファイアウォール等で)遮断される環境
開発中の動作確認用の定義のpush.ServerConnectRetryCountおよびpush.ServerConnectRetryWaitを設定いただくことで、クライアントアプリケーション開発時におけるRegistrationID登録の確認が容易になります。
以下の方法で設定が可能です。
<手順>
1.プッシュクライアント設定ファイルのpush.ServerConnectRetryCountおよびpush.ServerConnectRetryWaitに任意の値を指定します。
2.Android端末のWiFiを無効にし、クライアントアプリケーションから、GCMプッシュハンドラ初期化処理(GcmRegister.register)を実行します。
3.Android端末のWiFiを有効にします
手順1の設定に従い、GCMから取得したregistrationIDがIMAPSサーバに登録されます。
注意
push.ServerConnectRetryCountおよびpush.ServerConnectRetryWaitは開発中の動作確認用として提供しています。運用向け環境では指定しないでください。