
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}