Android 版の BoltzMessenger SDK を使用する

BoltzMessenger のサーバー部分のみを利用して、アプリにプッシュ通知機能を実装する方法です。

アプリ側の要件

アプリ側には以下の条件が必要となります。

  • Android Studio 3.0 を使用します。
  • Minimum SDK は Android 4.1 (API Level 16) 以上を指定する必要があります。

SDK の取り込み

組み込み対象のアプリを Android Studio で開き、app フォルダを右クリックして [Show in Explorer] もしくは [Reveal in Finder] を選択します。

BoltzMessenger のソースコードから boltzmessenger-sdk フォルダをプロジェクトの app フォルダと同じ階層にコピーします。

プロジェクトの settings.gradle を開き、以下の行を追加します。

1include ':boltzmessenger-sdk'

次に、Module: app の build.gradle に以下の行を追加します。

 1apply plugin: 'com.android.application'
 2
 3android {
 4    defaultConfig {
 5        ...
 6        missingDimensionStrategy 'serviceMode', 'gcmOnly' // 追加
 7    }
 8}
 9
10dependencies {
11    ...
12    implementation project(path: ':boltzmessenger-sdk') // 追加
13}

このとき、missingDimensionStrategy には使用する SDK の種類により切り替える必要があります。

構成 matchingFallbacks
GCM/FCM のみ gcmOnly
ADM のみ admOnly
GCM/FCM 及び ADM anyService

GCM/FCM を使用する設定

GCM/FCM を使用する場合は、Gradleに以下の設定が必要です。

プロジェクトの app フォルダの中に API キーを発行した際にダウンロードした google-services.json をコピーします。

Project: (プロジェクト名) の build.gradle に以下のように com.google.gms:google-services:2.0.0 の参照を追加します。

 1buildscript {
 2    repositories {
 3        jcenter()
 4    }
 5    dependencies {
 6        classpath 'com.android.tools.build:gradle:2.3.3'
 7        classpath 'com.google.gms:google-services:2.0.0' // 追加
 8    }
 9}
10// (後略)

次に、Module: app の build.gradle の最後に以下の行を追記します。

1apply plugin: 'com.google.gms.google-services'

AndroidManifest.xml を開き、以下の設定を追加します。([アプリのパッケージ名] は適切な値に置換してください)

 1<manifest ...>
 2    
 3    <!-- ここから追加 -->
 4    <permission android:name="[アプリのパッケージ名].permission.C2D_MESSAGE" android:protectionLevel="signature" />
 5    <uses-permission android:name="android.permission.WAKE_LOCK" />
 6    <uses-permission android:name="android.permission.VIBRATE" />
 7    <uses-permission android:name="[アプリのパッケージ名].permission.C2D_MESSAGE" />
 8
 9    <uses-permission android:name="android.permission.INTERNET" />
10    <uses-permission android:name="android.permission.WAKE_LOCK" />
11    <uses-permission android:name="android.permission.VIBRATE" />
12    <!-- ここまで追加 -->
13    
14    <application ...>
15    
16        <!-- ここから追加 -->
17        <receiver
18            android:name="com.google.android.gms.gcm.GcmReceiver"
19            android:exported="true"
20            android:permission="com.google.android.c2dm.permission.SEND">
21            <intent-filter>
22                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
23                <category android:name="[アプリのパッケージ名]" />
24            </intent-filter>
25        </receiver>
26        <service
27            android:name=".GcmListenerService"
28            android:exported="false">
29            <intent-filter>
30                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
31            </intent-filter>
32        </service>
33        <service
34            android:name=".sdk.gcm.BoltzMessengerInstanceIDListenerService"
35            android:exported="false">
36            <intent-filter>
37                <action android:name="com.google.android.gms.iid.InstanceID" />
38            </intent-filter>
39        </service>
40        <service
41            android:name=".sdk.gcm.BoltzMessengerRegistrationService"
42            android:exported="false" />
43        <!-- ここまで追加 -->
44    </applicaton>
45</manifest>

次に、以下のような GcmReceiver クラスを作成します。(@Override を指定しているところは適宜変更してください)

 1package [アプリのパッケージ名];
 2
 3/** import 略 **/
 4
 5/**
 6 * GCMから
 7 */
 8public class GcmListenerService extends BoltzMessengerGcmListenerService {
 9
10    /**
11     * アプリを開くインテントを作成します
12     */
13    @Override
14    protected Intent createOpenIntent(String messageId) {
15        return MessageDetailActivity.createIntent(this, messageId);
16    }
17
18    /**
19     * 通知に表示するタイトルを指定します
20     */
21    @Override
22    protected String getNotificationTitle() {
23        Resources resources = getResources();
24        return resources.getString(R.string.app_name);
25    }
26
27    /**
28     * 通知に表示するアイコンを指定します
29     */
30    @Override
31    protected int getSmallIconResourceId() {
32        return R.drawable.ic_notification;
33    }
34
35    /**
36     * 通知に表示するアイコン(大)を指定します
37     */
38    @Override
39    protected Bitmap getLargeIconBitmap() {
40        return null;
41    }
42
43    /**
44     * 通知に表示する色を指定します
45     */
46    @Override
47    protected int getNotificationColor() {
48        return getResources().getColor(R.color.notification_color);
49    }
50}

ADMを使用する設定

ADMを使用する場合、ダウンロードした Amazon アプリ・ゲームサービス SDK からamazon-device-messaging-(バージョン).jarを、プロジェクトの app フォルダの中に libs フォルダを作成してコピーします。

次に、Module: app の build.gradle に以下の行を追加します。

1dependencies {
2    provided files('libs/amazon-device-messaging-1.0.1.jar')
3}

AndroidManifest.xml を開き、以下の設定を追加します。([アプリのパッケージ名] は適切な値に置換してください)

 1<manifest ...
 2    xmlns:amazon="http://schemas.amazon.com/apk/res/android"><!-- ←追加 -->
 3    
 4    <!-- ここから追加 -->
 5    <permission android:name="[アプリのパッケージ名].permission.RECEIVE_ADM_MESSAGE" android:protectionLevel="signature" />
 6    <uses-permission android:name="[アプリのパッケージ名].permission.RECEIVE_ADM_MESSAGE" />
 7    <uses-permission android:name="com.amazon.device.messaging.permission.RECEIVE" />
 8
 9    <uses-permission android:name="android.permission.INTERNET" />
10    <uses-permission android:name="android.permission.WAKE_LOCK" />
11    <uses-permission android:name="android.permission.VIBRATE" />
12    <!-- ここまで追加 -->
13    
14    <application ...>
15    
16        <!-- ここから追加 -->
17        <amazon:enable-feature android:name="com.amazon.device.messaging" android:required="true" />
18
19        <!--ADM-->
20        <service android:name=".AdmListenerService" android:exported="false" />
21        <receiver 
22            android:name=".adm.AdmListenerService$MessageAlertReceiver"
23            android:permission="com.amazon.device.messaging.permission.SEND">
24            <intent-filter>
25                <action android:name="com.amazon.device.messaging.intent.REGISTRATION" />
26                <action android:name="com.amazon.device.messaging.intent.RECEIVE" />
27                <category android:name="[アプリのパッケージ名]" />
28            </intent-filter>
29        </receiver>
30        <!-- ここまで追加 -->
31    </applicaton>
32</manifest>

次に、以下のような AdmReceiver クラスを作成します。(@Override を指定しているところは適宜変更してください)

 1package [アプリのパッケージ名];
 2
 3/** import 略 **/
 4
 5/**
 6 * ADM
 7 */
 8
 9public class AdmListenerService extends BoltzMessengerAdmListenerService {
10    
11    public static class MessageAlertReceiver extends ADMMessageReceiver {
12        public MessageAlertReceiver() {
13            super(AdmListenerService.class);
14        }
15    }
16
17    /**
18     * アプリを開くインテントを作成します
19     */
20    @Override
21    protected Intent createOpenIntent(String messageId) {
22        return MessageDetailActivity.createIntent(this, messageId);
23    }
24
25    /**
26     * 通知に表示するタイトルを指定します
27     */
28    @Override
29    protected String getNotificationTitle() {
30        Resources resources = getResources();
31        return resources.getString(R.string.app_name);
32    }
33
34    /**
35     * 通知に表示するアイコンを指定します
36     */
37    @Override
38    protected int getSmallIconResourceId() {
39        return R.drawable.ic_notification;
40    }
41
42    /**
43     * 通知に表示するアイコン(大)を指定します
44     */
45    @Override
46    protected Bitmap getLargeIconBitmap() {
47        return null;
48    }
49
50    /**
51     * 通知に表示する色を指定します
52     */
53    @Override
54    protected int getNotificationColor() {
55        return getResources().getColor(R.color.notification_color);
56    }
57}

ご不明な点はありませんか?

機能の詳細、導入のご検討、お見積もり依頼などは、お気軽にお問い合わせください。
担当者から追ってご連絡いたします。

お問い合わせはこちら