推奨環境、動作環境
ReactNativeの動作環境
ReactNativeのb→dash mobile SDKの動作環境は、以下となります。
ReactNative | |
推奨環境 | 0.60.5 |
動作環境 | 0.60.5 |
iOSの動作環境
iOSのb→dash mobile SDKの推奨環境と動作環境は以下の通りです。
iOS | Xcode | Swift | Objective-C | |
推奨環境 | 10.0以上 | 12.1 | 4.0, 4.2, 5.3 | 2.0 |
動作環境 | 10.0以上 | 12.1, 12.2, 12.3 | 4.0, 4.2, 5.3 | 2.0 |
アプリ接客機能は 、iOS10系においては、公式のバグフィックスが適用された「iOS10.3」のみがサポート対象となり、「10.0」「 10.1」「 10.2」はサポート対象外になります。
Androidの動作環境
Androidのb→dash mobile SDKの推奨環境と動作環境は以下の通りです。
Android | 言語 | Android studio | |
推奨環境 | 5.0以上 | OpenJDK・JDK8, Kotlin | 3.6.3以上 |
動作環境 | 5.0以上 | OpenJDK・JDK7,8 | 3.4.x~3.6.3 |
minSdkVersion | compileSdkVersion | targetSdkVersion | |
ビルド環境 | 19 | 28 | 28 |
※ targetSdkVersion: 29は現在対応中ですが、現行版で動作に影響する事象は確認できておりませんので、29に変更した際は動作確認いただくようにお願いいたします
本SDKの計測は、以下のプラットフォームで動作確認を行っております。
Androidバージョン | 対応状況 |
Android 4.1, 4.2 | SDK ver2系から動作対象外 |
Android 4.4 | SDK ver2.4.1から動作対象外 |
Android 5.0 | 動作確認済 |
Android 6.0 | |
Android 7.0 | |
Android 8.0 | |
Android 9.0 | 動作確認済(※後述するAndroidManifest.xmlに追加設定必須) |
Android 10 | |
Android 11 | 検証中 |
ReactNativeの環境設定
SDKのインストール
ここではb→dash mobile SDKのReact Nativeプロジェクトへの導入方法について説明します。
SDKファイルの紹介
b→dash mobile SDKは「BDash-Mobile-ReactNativeSDK_vX.X.X.zip」内に各種ファイルが格納されています。
※「BDash-Mobile-ReactNativeSDK_vX.X.X.zip」については、貴社担当のカスタマーサクセス担当からお渡しいたします
ファイル名称 | 説明 |
BDashTrackerModule.js | SDKの「トラッキング機能」を利用するためのJavaScript–Nativeのブリッジクラス |
BDashNotificationModule.js | SDKの「Push通知」を利用するためのJavaScript–Nativeのブリッジクラス |
BDashNotificationService.js | SDKの「Push通知 のメッセージ受信やON/OFF状態」を受け取るためのJavaScript–Nativeのブリッジクラス |
BDashWebReceptionView.js | SDKの「アプリ接客機能」を利用するためのJavaScript–Nativeのブリッジクラス |
SDKファイルの配置
「BDash-Mobile-ReactNativeSDK_vX.X.X.zip」を展開し、「src」フォルダごとReative Nativeプロジェクトの TOP 階層に配置してください。
トラッキング機能を利用する
SDKの 「トラッキング機能」 を利用するJavaScriptファイルで、以下のimportを実施してください。
import BDashTrackerSDK from './src/bdash/BDashTrackerModule';
※「BDashTrackerSDK」は任意の名称に変更可能です
Expoを利用しているプロジェクトについて
b→dash SDK はネイティブ用のSDKのため、Expo プロジェクトにそのままでは組み込むことができません。その為、Expo プロジェクトでは eject を行う必要があります。この手順を行うことで、XCodeやAndroidStudio 上からネイティブSDK のビルドを行えるようになります。以下から、手順について説明します。
※Expoからejectを行った場合、Androidに関しましてPush通知の環境構築を行う必要があります
ターミナルからプロジェクトのディレクトリに移動する
プロジェクトのバックアップを行ったうえで、Windows の場合はコマンドプロンプト、Mac の場合はターミナルを立ち上げます。起動後、下記コマンドを実行します。
cd [対象のExpoプロジェクト]
ls -la
参考として、現在のプロジェクト構成としては下記のようになっています。
eject コマンドを実行する
プロジェクトに移動したことを確認したら、実際に eject を行います。下記コマンドを実行します。
expo eject
実行すると Android のパッケージ名 の入力を求められることがあります。その場合、画面内容に沿って入力を行います。
続いて iOS のバンドル名の入力を求められることがあります。この場合も、画面内容に沿って入力を行います。
処理が完了するまでに数分かかるので、完了するまで待ちます。
プロジェクト構成を確認する
プロジェクト構成を確認するコマンドを実行します。
ls -la
新しく Android と iOS ディレクトリが作成されているのを確認できます。
上記のディレクトリが、各プラットフォームの「ネイティブのビルド環境」となります。それぞれ、下記の公式の開発環境ツールを利用しプロジェクトを開きます。
- Android はAndroidStudioを利用する
- iOS はXCode を利用する
開発環境でプロジェクトを開けましたら、本記事のiOS、AndroidそれぞれでSDKの導入を行ってください。
iOSの環境設定
SDKのインストール
ここではb→dash mobile SDKをXcodeのプロジェクトに設置する方法を説明します。
SDKファイルの紹介
b→dash mobile SDKは「BDash-Mobile-ReactNativeSDK_vX.X.X.zip」内に各種ファイルが格納されています。
※「BDash-Mobile-ReactNativeSDK_vX.X.X.zip」については、貴社担当のカスタマーサクセスからお渡しいたします
ファイル名称 | 概要 | 用途 | ||
ログ取得 | Push通知 | アプリ接客 | ||
Tracker.swift | Swift言語で書かれたSDK本体 | ○ | ○ | ○ |
tracking.plist | SDKの定義ファイル | 〇 | 〇 | 〇 |
BDashTrackerModule.h
BDashTrackerModule.m |
JavaScriptからSDKのTracking機能を呼び出すためのObjective-C Bridgeクラス | ○ | ○ | ○ |
BDashMobileSDK.h
BDashMobileSDK.m |
SDKの処理を呼び出すためのクラス | 〇 | 〇 | 〇 |
BDashMobileSDK.xcdatamodeld | SDK内部で使用するDB モデル | 〇 | 〇 | 〇 |
BDashNotificationService.h
BDashNotificationService.m |
JavaScriptへの通知を設定するためのクラス | 〇 | ○ | 〇 |
BDashNotificationModule.h
BDashNotificationModule.m |
JavaScriptからSDKのPush機能を呼び出すためのObjective-C Bridgeクラス | - | ○ | - |
BDashWebReceptionManager.h
BDashWebReceptionManager.m |
JavaScriptからSDKのアプリ接客機能を呼び出すためのObjective-C Bridgeクラス | - | - | ○ |
BDashWebReceptionManagePopup.h
BDashWebReceptionManagePopup.m |
アプリ接客機能のPopup画面 | - | - | ○ |
BDashWebReception.swift | Swift言語で書かれたSDK本体 | - | - | ○ |
jp_co_f-scratch_closebutton.png | アプリ接客で利用するリソース画像 | - | - | 〇 |
ReactNativeでのSDKファイルの組み込み
プロジェクトファイル(xcodeproj)と同じ階層にb→dash mobile SDKフォルダごと格納してください。SDKパッケージ内のファイルはSwift言語バージョンごとに分かれています。組み込むと以下のような画面になります。
①元々ReactNativeで利用されている場合
現在のプロジェクトのビルド設定に合わせたSwiftのバージョンを選択してください。
②ReactNative Expoからejectして利用される場合
サンプルコードをObjective-Cご案内させていただいているので、Objective-Cを利用する前提で、最新のSwift5を選択いただき、プロジェクトの使用言語が「Objective-C」の場合の手順を実施してください。
XcodeでのSDKファイルの組み込み
Xcodeのプロジェクトのナビゲータエリア内の任意の場所を右クリックし、「Add Files to “ターゲット名”」 をクリックします。その後、SDKファイルを選択し「Add」をクリックします。
「ログ取得」「Push通知」「アプリ接客」の3つの機能の内、一部のみ利用する場合でも、「SDKファイルの紹介」にて紹介した7つのファイルはすべて組み込みましょう。
※各ファイルの依存関係があるため、一部のファイルのみ組み込んだ場合は正常に動作しないケースがあります
Tracker.swiftの追加
移動したTracker.swiftのみ選択し、「Add」をタップしてください。
プロジェクトの使用言語が「Objective-C」の場合、追加時に以下のダイアログが表示されたら、「Create Bridiging Header」をクリックします。プロジェクトにブリッジファイルが追加されます。表示されなかった場合は、手動にて【プロジェクト名】-Bridging-Header.hというファイルを作成しプロジェクトに追加します。
「Add Files to “ターゲット名” 」をクリック
再度、プロジェクトのナビゲータエリア内のプロジェクトフォルダを右クリックし、「Add Files to “ターゲット名” 」をクリックします。
フォルダの選択
移動した「BDashSDK」フォルダを選択しAddをクリックします。
フォルダの移動
「BDashSDK」フォルダに、以下のファイルを移動します。
・Tracker.swift
・Bridgi ng-Header.h(プロジェクトの使用言語が「Objective-C」の場合)
以下は移動後のフォルダ階層となります。
SDKファイルを参照するため、APIを利用するクラスに以下の記述を行いインポートします。
#import "【プロジェクト名】-Swift.h"
※Swiftの場合はSDKファイルを配置するだけで、ご利用になれます
AppDelegateへのコード追加
アプリ作成時に自動で生成されるAppDelegateクラスに対して、「BDash-Mobile-SDK_vX.X.X.zip」内に同法されている「AppDelegate.swift」の必要部分のソースコードのコピーを行います。
SDKの初期化を実施するため、以下のコードを追加してください。
#import "BDashMobileSDK.h"
〜 省略
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
〜 省略
// SDKの初期化コードを追加
[BDashMobileSDK initSDK];
〜 省略
}
プロパティリストへの設定値の入力
次にb→dash mobile SDKの設定ファイル(プロパティリスト)である「tracking.plist」に対して設定値を入力します。
設定値の準備
以下3つの設定値を「tracking.plist」へ登録します。
Plist属性名 | 値の内容 |
APP_BDASH_APP_ID | カスタマーサクセス担当より連絡しますので、その値を入力してください。 |
APP_BDASH_ACCOUNT_ID | カスタマーサクセス担当より連絡しますので、その値を入力してください。 |
APP_BDASH_APP_GROUP_ID | リッチ通知で利用するAPP GROUP IDです。貴社のAppleDeveloperで設定した値を入力してください。 |
設定値の入力
Xcodeのプロジェクトのナビゲータエリア内に表示される「tracking.plist」をクリックし、tracking.plist内に準備した設定値を入力します。
設定した値を「BDashNotificationService」へ追加
「BDashNotificationService」からも設定値を読み取れるように、Target Membership欄にある「BDashNotificationService」にチェックを入れます。
「BDashNotificationService」は主にリッチ通知機能用ですが、依存関係があるため「ログ取得」「Push通知」「アプリ接客」のいずれの機能を利用する場合も、本設定は実施いただくようお願いします。
各種サービスとの連携
b→dash mobile SDKを利用するために必要な、各種サービスとの連携手順を説明します。
CocoaPodsとFirebase Cloud Messaging(FCM)のインストール
以下バージョンの「CocoaPods」と「Firebase Cloud Messaging(FCM)」をインストールします。
– FCMバージョン : 5.19.0
– CocoaPodsバージョン : 1.10.0
## Podfile への導入例
pod 'Firebase/Core','5.19.0'
pod 'Firebase/Messaging','5.19.0'
- b→dash SDK では 2019年3月度のバージョン FCM 5.19.0でビルドを行っています。
メジャーバージョンが異なる場合はFCM側でインターフェイスが一新される可能性があるため、メジャーバージョン番号は揃えることを推奨しております - また下記FCMバージョンの動作確認も行っております(こちらは動作保障するものではありません)
v6.7.0, v6.17.0, v6.27.0
※上記のバージョンをご利用される場合、SDK の差し替えが必要になるのでカスタマーサクセス担当までご連絡をお願いいたします - react-native-firebase/massagingの利用には2021年1月現在対応しておりません。
Push通知を利用される場合は、cocoapodsを利用してネイティブ版のFCMライブラリのインストールをお願いいたします
※すでにreact-native-firebase/messagingでPush通知を導入している場合にはバージョンの互換性をとる必要があるため、カスタマーサクセス担当までご連絡をお願いいたします
Androidの環境設定
利用している外部ライブラリについて
以下が利用している外部ライブラリの一覧になります。
外部ライブラリ名 | 使用用途 |
play-services-ads-identifier | 広告 ID (“advertising ID”)を利用するため |
FCM(※1, ※2, ※3) | Firebase Cloud Messaging for Android を利用するため |
AndroidX(※4) | OSの互換性の開発に必要なため |
GSON~v2.8.5~(※5) | SDK の基盤に必要なため |
※1. b→dash mobile SDKが対応している FCM バージョン(2021年3月時点)
・推奨バージョン:20.2.4
・動作確認済バージョン:20.0.1 & 20.1.7
マイナーバージョンが同列な場合は、上記のビルドバージョンをご利用ください。
※2. FCM のトークン処理を実施するクラス
トークン処理用クラスが 17.1.0 から変更されたため、アップデート時はご注意ください。
※3. サードパーティライブラリや独自ライブラリを実装している場合
受信処理が競合する場合があるため「Android用SDKでPush配信をしたい」の「Push受信サービスの競合について」をご確認ください。
※4. サポートライブラリは対象外
本SDK では AndroidX を採用しているため、サポートライブラリを利用している場合はAndroidX へのアップデートを行う必要があります。
※5. GSON について
最新のv2.8.6 ではビルドできないケースが報告されておりますので、実績のあるv2.8.5 をご利用ください。公式Issueはこちらをご覧ください。
※ react-native-firebase/massagingの利用について(2021年1月時点)
現在対応しておりませんので、Push通知を利用される場合は本手順書の内容に沿って、ネイティブ版のFCMライブラリのインストールをお願いします。すでにreact-native-firebase/messagingでPush通知を導入している場合には、バージョンの互換性を確認する必要があるため、担当までご連絡をお願いいたします。
SDKのインストール
ここではb→dash mobile SDKのAndroidアプリケーションへのインストール方法について説明します。
SDKの取得
b→dash mobile SDKをzipファイルにてカスタマーサクセス担当からお渡しさせていただきます。
- ご提供しているSDK(zip 内) のSampleディレクトリに、b→dash が提供している 「Push 通知」 と 「アプリ接客」 のサンプルプロジェクトが同梱されています。
- 導入のサンプルコードは全てJava言語で記載 していますので、Kotlinを利用されている場合は適宜読み替えて導入をお願いいたします。
ライブラリの追加
付属のZIPファイルを展開し、付属のsrcディレクトリを AndroidStudio 上の「JAVAパッケージ」の直下に Drag & Drop を行い、組み込みます。以下はパッケージ名がcom.example.test.mytest の場合の組み込み例です。
SDKのsrcディレクトリ内のパッケージ名は下記となりますが、組み込む際にパッケージが異なってしまっても動作そのものには影響はありません。
パッケージ名: com.f_scratch.bdash.mobile.react
但し、今後の互換性を担保するためには、上記のパッケージ名に合わせる事を強く推奨しています。
build.gradleの編集
b→dash mobile SDKのコンパイルに必要な設定をプロジェクトのbuild.gradleに追加します。以下はAndroid Studio 3.6.3以降のサンプルコードとなります。
repositories{ flatDir{ dirs 'libs' } } dependencies { … 省略 …{ implementation(name:'bdash-mobile-sdk', ext:'aar') implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0’ // Push通知を利用する場合は必須 implementation 'com.google.firebase.gms:firebase-messaging:20.2.4' // AndroidX を利用. 次のページの「Android5 環境でのバグについて」もご確認ください implementation 'androidx.appcompat:appcompat:1.2.0' } apply plugin: 'com.google.gms.google-services'
Application クラスとActivityへの SDK 初期化コードの追加
SDKの初期化とJS 側への連携を行うために、下記の赤い箇所のコードをプロジェクトに追加してください。
import com.f_scratch.bdash.mobile.react.BDashPackage;
import com.f_scratch.bdash.mobile.react.BDashMobileSDK;
public class TrackerApplication extends Application
implements ReactApplication {
public void onCreate(){
super.onCreate();
… 省略
// b→dash SDK の初期化関数を呼び出します
BDashMobileSDK.initSDK(this);
}
@Override
protected List getPackages() {
List packages = new PackageList(this).getPackages();
… 省略
packages.add(new BDashPackage());
return packages;
}
}
AndroidManifest.xmlの編集
b→dash mobile SDKの動作に必要な設定をAndroidManifest.xmlに追加します。<application>の前に、次のパーミッションの設定を追加します。
パーミッション | Protection Level | 概要 |
INTERNET | normal | b→dash mobile SDKが通信を行うために必要となります。 |
ACCESS_NETWORK_STATE | normal | b→dash mobile SDKが通信可能かを確認するために必要となります。 |
VIBRATE | normal | b→dash mobile SDKがPush通知を行う際に必要となります。(Push通知を利用しない場合は不要) |
WAKE_LOCK | normal | SDK v2.6.0以降のご利用の場合は必要ありません。 |
下記はパラメーターの記載例です。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
本SDK をAndroid9 以降かつ APIレベル28 以上で、正しく動作させるにはAndroidManifest.xmlに下記を記載する必要があります。
<uses-library android:name="org.apache.http.legacy" android:required="false" />/* Your code... */
こちらはDefaultHttpClient の利用時に「ClassCastExceptionが発生する問題」を延命する処置となります。SDK動作自体には問題ありませんが、今後のバージョンアップで改修する予定です。
<meta-data> の追加
b→dash mobile SDKの実行に必要な以下の<meta-data> をmanifest の <application> 内に追加します。
パラメーター | 値 |
APP_BDASH_ACCOUNT_ID | カスタマーサクセス担当より連絡しますので、その値を入力してください。 |
APP_BDASH_APP_ID | カスタマーサクセス担当より連絡しますので、その値を入力してください。 |
パラメーターの記載例は以下の通りです。
<meta-data android:name="APP_BDASH_ACCOUNT_ID"
android:value="カスタマーサクセス担当より連絡しますので、その値を入力してください。" />
<meta-data android:name="APP_BDASH_APP_ID"
android:value="カスタマーサクセス担当より連絡しますので、その値を入力してください。" />
Proguard の除外設定
Proguard を使って難読化される場合は、アプリケーションの app ディレクトリに有る proguard-project.txt 又は proguard-rules.pro に以下の設定を追加してください。
-keep class com.f_scratch.bdash.mobile.analytics.**{
*;
}
Push通知の設定(※Push通知を利用する場合のみ)
Push通知を利用する場合は以下の設定を行ってください。
Google アカウントとサーバーキーの事前準備
Push通知を利用するにはGoogle アカウントが必要となりますので事前にご用意ください。また Firebase Console にて「サーバーキー」を発行しておく必要があります。公式ドキュメントも参照ください。
設定ファイルの組み込み
Firebase Console にて任意のプロジェクトを作成し、ダウンロードしてきた google-service.jsonをプロジェクトの app ディレクトリに組み込みます。
組み込み完了後のイメージは以下の通りです。
起動するアクティビティの設定
Push通知を受け取った時、標準ではandroid.intent.category.LAUNCHERの Activity が起動します。独自に指定する場合は、以下の <meta-data> をmanifest の <application> 内に追加します。
パラメーター名 | 値 |
com.f_scratch.bdash.mobile.push.launch | 【オプション】起動アクティビティをフルパスで指定します |
下記は「起動対象にする Activity」を指定するパラメーターの記載例です。
<meta-data
android:name="com.f_scratch.bdash.mobile.push.launch"
android:value="パッケージ名も含めてActivityを指定します" />
受信時のアイコンの設定
デフォルトでは「アプリケーション組み込みのアイコン」が利用されます。アプリケーションのアイコンと通知アイコンの画像サイズは異なっているため、イメージが崩れてしまうのを防ぐためにもmanifest で定義を行う必要があります。
パラメーター名 | 値 |
com.f_scratch.bdash.mobile.push.icon | 【必須】drawable ディレクトリ内の画像を指定します。 |
com.f_scratch.bdash.mobile.push.accentColor | 【オプション】Android5以降で「アイコンの背景色」を指定します。targetSdkVersion が21以上で有効になります。 |
com.f_scratch.bdash.mobile.push.bigIcon | 【オプション】drawable ディレクトリ内の画像を指定します。Android 5.0 未満までの OS で自動的に有効になります。 |
com.f_scratch.bdash.mobile.push.lollipop.bigIcon | 【オプション】drawable ディレクトリ内の画像を指定します。Android 5.0 以降の OS で自動的に有効になります。 |
Android 5以降での各パラメーターが反映されるイメージ画像です。
下記はパラメーターの設定例です。 「drawable ディレクトリ」の画像を指定します。
<!-- BDash SDK の通知時のアイコン(必須) -->
<meta-data android:name="com.f_scratch.bdash.mobile.push.icon"
android:value="@drawable/【画像ファイルを指定します】" />
<!-- BDash SDK のアイコン背景色(オプション)-->
<meta-data android:name="com.f_scratch.bdash.mobile.push.accentColor"
android:value="@color/【色を指定します】" />
<!-- BDash SDK の通知時のビッグアイコン(オプション)Android 5.0未満で自動有効 -->
<meta-data android:name="com.f_scratch.bdash.mobile.push.bigIcon"
android:value="@drawable/【画像ファイルを指定します】" />
<!-- BDash SDK の通知時のビッグアイコン(オプション)Android 5.0以降で自動有効 -->
<meta-data android:name="com.f_scratch.bdash.mobile.push.lollipop.bigIcon"
android:value="@drawable/【画像ファイルを指定します】" />
通知アイコンのイメージサイズは、以下のサイズが推奨されています。( Android Developerサイトより )
drawable-dpi | Image size( width x height) |
ldpi | 18 x 18 |
mdpi | 24 x 24 |
hdpi | 36 x 36 |
xhdpi | 48 x 48 |
xxhdpi | 72 x 72 |
xxxhdpi | 96 x 96 |
Android OS の端末の表示仕様(見え方)は Android ICS, JellyBean, Lollipop 以降で見え方が異なるので事前にどのように見えるかご確認ください。
なおビックアイコンは Lollipop 未満と以降で見え方が異なるので、それぞれで指定できるようにしています。
通知チャンネルの設定
通知チャンネルを有効にするためには、以下の必須設定をmanifest で定義を行う必要があります。
最初に「通知チャンネル」を作成したあと、「通知チャンネル名/説明」の更新は問題なく可能ですが、通知の重要度などはAPIを通して変更することができません。変更を行う場合は、既存の通知チャンネルを削除し新しく作り直す必要があります。
パラメーター名 | 値 |
com.f_scratch.bdash.mobile .push.channel.id | 【必須】通知チャンネルIDをユニークで指定します。 |
com.f_scratch.bdash.mobile .push.channel.name | 【必須】通知チャンネル名を指定します。 |
com.f_scratch.bdash.mobile .push.channel.desc | 【オプション】通知チャンネルの説明を行います。 |
com.f_scratch.bdash.mobile .push.channel.badge |
【オプション】通知チャンネルでバッジを付けるか指定します。
実際にバッジが付くかはホームアプリと OS の双方に依存します。 現SDK では正式にサポートはしていません。(デフォルト値は true) |
com.f_scratch.bdash.mobile .push.channel.importance |
【オプション】通知の重要度を以下の定数を指定します。
Oreo の前と同じ挙動を期待する場合はhigh を指定します。 (デフォルト値は high) high:NotificationManager.IMPORTANCE_HIGH default:NotificationManager.IMPORTANCE_DEFAULT low:NotificationManager.IMPORTANCE_LOW min:NotificationManager.IMPORTANCE_MIN none:NotificationManager.IMPORTANCE_NONE |
下記はパラメーターの設定例です。種類によって value/resource の差異があるため設定の際はご注意ください。
<meta-data android:name="com.f_scratch.bdash.mobile.push.channel.id"
android:value="【通知チャンネルIDを指定します。ユニークである必要があります】">
</meta-data>
<meta-data android:name="com.f_scratch.bdash.mobile.push.channel.name"
android:resource="@string/【通知チャンネル名を指定します】">
</meta-data>
<meta-data android:name="com.f_scratch.bdash.mobile.push.channel.desc"
android:resource="@string/【通知チャンネルの説明を記載します】">
</meta-data>
<meta-data android:name="com.f_scratch.bdash.mobile.push.channel.badge"
android:value="【バッジを表示する: true 表示しない: false】">
</meta-data>
<meta-data android:name="com.f_scratch.bdash.mobile.push.channel.importance"
android:value="【重要度を指定します】">
</meta-data>
組み込みの設定画面
Android版では組み込みの「Push通知の設定画面」を用意しています。
組み込みの「設定画面」を利用する場合は、以下の情報を <activity> として定義します。
<activity
android:name="com.f_scratch.bdash.mobile.analytics.notification.BDashNotificationSettings"
android:screenOrientation="portrait"
android:theme="@style/BDashSDK_Theme"
/>
プログラムコードからは以下のように呼び出します。
Intent intent = new Intent(this, BDashNotificationSettings.class);
startActivity(intent);
デザインテーマはお客様の方でオーバライドすることもできます。parent 属性に「BDashSDK_Theme」 を指定した上で、ヘッダカラー色の要素「colorPrimary」の上書きが可能です。
Push受信サービスの競合について(※FCM導入済みの場合のみ)
Push通知の受信処理に独自のペイロード解析を行っている場合、Android では「FirebaseMessagingService」クラスを継承し実装することになります。b→dash Mobeile SDK では上記のクラスを継承しmanifestファイルに下記定義を行っています。
<service
android:name="com.f_scratch.bdash.mobile.analytics.notification.FCMReceiverService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
この定義はmanifest内に1つしか定義ができないため、アプリで定義すると SDK の定義が上書きされ「b→dash の通知受信」が行われなくなります。アプリとSDK双方で受信できるように、下記の対策を取る必要があります。
アプリ側で「b→dash 受信クラス」を継承し処理を切り分ける
フック処理を実装し「メッセージ種別」によって処理するメソッドを分ける
サンプルコードは以下のようになります。
import com.f_scratch.bdash.mobile.analytics.notification.FCMReceiverService;
// b→dash の通知サービスを継承させます.
public class HookFCMReceiverService extends FCMReceiverService {
@Override
public void onCreate() {
// 必須です. super クラスの onCreate() を呼び出します
super.onCreate();
}
@Override
public void onMessageReceived(RemoteMessage message, Bundle data) {
if( アプリの通知と判断 又は b→dash SDK の通知 と判断する(※1) ){
// アプリ側の通知処理を行います
} else {
// b→dash 側の通知処理を行います
super.onMessageReceived(message, data);
}
}
@Override
public void onNewToken(String token) {
// 現行SDK では onNewToken は未実装なので下記は必須ではありません
// SDK v2.3.0 からは必須になります。
super.onNewToken(token);
}
@Override
public void onDeletedMessages() {
super.onDeletedMessages();
}
@Override
public void onMessageSent(String msgId) {
super.onMessageSent(msgId);
}
}
※1 「b→dash の通知と判断」する場合、第二引数data のペイロードの中に “jp_co_fscratch” というキーが定義されているのでそちらをご利用ください。 値には 1 が入ってますが、値そのものは無視してください。
[参考]SDKが生成するディレクトリ構成
導入されるアプリケーションの[パッケージ名] 以下に、SDKは下記の構成で「フォルダ/ファイル」を生成します。赤く記載した箇所が本SDKで生成を行います。
shared_prefs – com.f_scratch.bdash.mobile.analytics.gcm.xml
files – com.fsbdash.mobile.analytics.ser – [ログデータ/SDKデータ用のファイル]