ページの先頭行へ戻る
Interstage Mobile Application Server V1.3.0 アプリケーション開発ガイド
FUJITSU Software

6.5.2 IMAPSプッシュ通知を利用するネイティブアプリケーションの開発

IMAPSプッシュ通知を利用するネイティブアプリケーション向けのAPIはJavaで提供します。
IMAPS向けのネイティブアプリケーションの開発環境を準備後、以下のファイルをコピーします。開発環境は、 3.3.1 開発環境の準備を参照してください。
Windows
<DVD-ROMドライブ>\development\android\push\native
Linux
<DVD-ROMマウントディレクトリ>/development/android/push/native
上記ディレクトリから開発用端末に資産をコピーし、Moduleとしてインポートします。次に、インポートしたModuleを参照Moduleとして設定します。
IMAPSプッシュ通知を利用するネイティブアプリケーションの開発には、以下の作業が必要です。
  1. マニフェストファイルの修正
  2. プッシュクライアント設定ファイルの作成
  3. プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成
  4. build.gradle ファイルの修正

1.マニフェストファイルの修正

  • Wi-Fi機能の状態を参照(WiFi MACアドレスを利用)するために、以下のパーミッションを設定します。
    android.permission.ACCESS_WIFI_STATE
  • IMEIを取得するために、以下のパーミッションを設定します。IMEI(International Mobile Equipment Identifier)は、端末識別番号です。
    android.permission.READ_PHONE_STATE

    注意

    インストール先の端末がAndroid6.0以上の場合、パーミッションの確認が必要です。詳細は3.3.7 パーミッションを参照してください。
  • ネットワークの接続/切断状態を取得するため、以下のパーミッションを設定します。
    android.permission.ACCESS_NETWORK_STATE
  • プッシュ受信用のサービスをアプリケーション起動時および端末起動時に自動起動するには、以下の指定が必要です。
    • 端末の起動が完了したことをサービスが受け取れるように、以下のパーミッションを指定します。
      android.permission.RECEIVE_BOOT_COMPLETED
    • レシーバーがインテントを受け取れるようにインテントフィルターと以下のパーミッションを指定します。
      action android:name="android.intent.action.BOOT_COMPLETED
  • サービスとして、com.fujitsu.imaps.push.PushServiceクラス、または、その派生クラスを指定します。
  • レシーバーとして、com.fujitsu.imaps.push.BootReceiverを指定します。
        ...
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    
    <application  ...>
        <activity ...>
                ...
        </activity>
        <service android:name="com.fujitsu.xxx.push.PushService" />    <receiver android:name="com.fujitsu.imaps.push.BootReceiver">        <intent-filter>            <action android:name="android.intent.action.BOOT_COMPLETED"/>        </intent-filter>    </receiver>
                   

2. プッシュクライアント設定ファイルの作成

プッシュハンドラに渡すパラメータを、プッシュクライアント設定ファイル(push.properties)に設定します。プッシュクライアント設定ファイルについては、付録D プッシュクライアント設定ファイルを参照してください。

3. プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成

プッシュクライアント設定ファイル情報は、プッシュハンドラを利用する前に設定してください。
以下はプッシュクライアント設定ファイルの設定例です。
// プッシュサーバとの接続先をプッシュクライアント設定ファイルに設定する
push.ServerAddress = https://example.com/
push.SelfCertificate = true
以下はプッシュ通知を受信できる状態にする場合のプッシュハンドラ初期化処理例です。
public class Sample {
    // プッシュ部品のインスタンス
    private static PushManager mPushManager = null;

    // プッシュ部品から通知を受け取るためのコールバッククラスの宣言
    private class MyReceiver extends PushReceiver{
        @Override
        public void callback(int result, Bundle data) {
            // ここに通知されます
            if(result == PushDefine.RESULT_REG_SERVER_SUCCESS) {  // 初期化完了
            }
        }
    }

    public void executeSample() {
        // プッシュハンドラの初期化
        mPushManager = new PushManager(context, new MyReceiver());
        pm.bind(PushService.class);
        try {
            pm.init();
        } catch (PushException e) {
            e.printStackTrace();
        }
        …
    }
}
以下はプッシュ通知を受信できる状態にしない場合(登録ID払出だけ)のプッシュハンドラ初期化処理例です。任意のタイミングでプッシュ基盤サーバとの接続がおこなえます。
public class Sample {
    // プッシュ部品のインスタンス
    private static PushManager mPushManager = null;

    // プッシュ部品から通知を受け取るためのコールバッククラスの宣言
    private class MyReceiver extends PushReceiver{
        @Override
        public void callback(int result, Bundle data) {
            // ここに通知されます
            if(result == PushDefine.RESULT_REG_SERVER_SUCCESS) {  // 初期化完了
                // プッシュ基盤サーバと接続
                mPushManager.connect();
            }
        }
    }

    public void executeSample() {
        // プッシュハンドラの初期化
        mPushManager = new PushManager(context, new MyReceiver());
        pm.bind(PushService.class);
        try {
            pm.initAtomic();
        } catch (PushException e) {
            e.printStackTrace();
        }
        …
    }
}

4.build.gradle ファイルの修正

  • プッシュクライアント設定ファイルを参照するために、defaultConfigのapplicationIdにパッケージ名を設定します。以下は、設定例です。
    android {
        ・・・
        defualtConfig {
          applicationId 'com.sample.app'
        }
    }

    注意

    ビルドを行うGradle version によっては、上記設定が行われていない場合、プッシュクライアント設定ファイルの参照に失敗し、実行時にエラーとなる場合があります。

ログ出力を行う場合、6.5.6 ログ出力のカスタマイズを参照してください。
認証の設定は、6.5.7 認証クラスの定義を参照してください。
拡張データを指定する場合は、6.5.8 拡張データの指定の指定を参照してください。
エラー通知受け取りを行う場合、6.5.9 IMAPSプッシュの処理結果受け取りを参照してください。
既読通知機能の利用を行う場合、6.5.13 既読通知機能の利用を参照してください。

注意

ダウンロード方法により読み込み専用ファイルになる場合がありますが、プロジェクト読み込み時にファイルの書き込み権限が必要となりますので、その際は権限の付与など必要な対処を実施してください。

注意

build.gradleのcompileSdkVersionに23を指定して、プッシュ通知のAPIの以下のメソッドを使用する場合、
  • com.fujitsu.imaps.push.customize.PushExtAuth
    • setRequestAuth メソッド
    • saveResponseAuth メソッド
build.gradleに以下を追加してください。
android {
    .....
    useLibrary 'org.apache.http.legacy' //この行を追加
    .....
}
useLibraryの追加をしないと、認証APIでコンパイルエラーが発生します。