GCMプッシュ通知を利用するネイティブアプリケーションを開発するための事前準備として以下を行ってください。
注) GoogleCloudMessaging.register()に渡すSENDER_IDは、作成したプロジェクトの「Project Number」を指定。
詳細は、Google Developers Consoleを参照してください。
GCMプッシュ通知を利用するネイティブアプリケーション向けのAPIはJavaで提供します。IMAPSプッシュ通知を利用するネイティブアプリケーション向けのAPIと同様に準備してください。
GCMプッシュ通知を利用するネイティブアプリケーションの開発には、以下の作業が必要です。
android.permission.ACCESS_WIFI_STATE
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"/>
... <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="[packge]" /> </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> ...
プッシュハンドラに渡すパラメータを、プッシュクライアント設定ファイル(push.properties)に設定します。プッシュクライアント設定ファイルについては、付録G プッシュクライアント設定ファイルを参照してください。
プッシュクライアント設定ファイル情報は、プッシュハンドラを利用する前に設定してください。
以下はプッシュクライアント設定ファイルの設定例です。
// プッシュサーバとの接続先をプッシュクライアント設定ファイルに設定する 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();
GCMプッシュ通知を受信するためには、Google Play開発者サービス(4.4.52以降)が必要です。Google Play開発者サービスがインストールされていない場合、プッシュハンドラ初期化処理が失敗し、GCMのプッシュ通知を受信できません。Google Play開発者サービスはGoogle Playから入手できます。
注意
Google Play開発者サービスは、開発したアプリケーションを実行するAndroidへインストールする必要があります。
Export Android Applicationを行う場合は、Eclipseで以下の設定をおこないます。
注意
上記は、すべてのプロジェクトに反映されます。パッケージング後は、必要に応じて設定を元に戻してください。
ログ出力を行う場合、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は開発中の動作確認用として提供しています。運用向け環境では指定しないでください。