Android MA機能統合ガイド
使用のヒント
EngageLab SDKのMA機能を使用するには、AppPushモジュールを同時に統合する必要があります。まず、AppPushプラットフォームでアプリケーションを作成し、AppKeyを取得してください。
1. libsフォルダへのパッケージのインポート
- 手動方法
libsパッケージ内のmt-sdk-x.x.x-engagelab.aarをlibsディレクトリにインポート
libsパッケージ内のmt-sdk-ma-x.x.x.aarをlibsディレクトリにインポート
libsパッケージ内のmt-sdk-x.x.x-engagelab.aarをlibsディレクトリにインポート
libsパッケージ内のmt-sdk-ma-x.x.x.aarをlibsディレクトリにインポート
このコードブロックはフローティングウィンドウ内に表示されます
- 自動方法
dependencies {
// 必須、メインパッケージ
implementation 'com.engagelab:engagelab:5.0.0' // ここではバージョン5.0.0を例としています。
// オプション、MA機能
implementation 'com.engagelab.plugin:oth_ma:5.0.0' // ここではバージョン5.0.0を例としています。
}
dependencies {
// 必須、メインパッケージ
implementation 'com.engagelab:engagelab:5.0.0' // ここではバージョン5.0.0を例としています。
// オプション、MA機能
implementation 'com.engagelab.plugin:oth_ma:5.0.0' // ここではバージョン5.0.0を例としています。
}
このコードブロックはフローティングウィンドウ内に表示されます
2. build.gradleの設定
plugins {
id 'com.android.application'
}
android {
...
defaultConfig {
// アプリのパッケージ名、コンソール上のものと一致する必要があります
applicationId "com.engagelab.app"
...
manifestPlaceholders = [
// AppKey、コンソール上のものと一致し、パッケージ名と1対1の関係があります
ENGAGELAB_PRIVATES_APPKEY : "Your appkey",
// EngageLabのアプリチャンネル、チャンネル統計に使用
ENGAGELAB_PRIVATES_CHANNEL: "developer",
// EngageLabのプロセス、EngageLab SDKが動作するプロセス。注意: 開始時
ENGAGELAB_PRIVATES_PROCESS: ":remote"
]
}
}
dependencies {
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
}
plugins {
id 'com.android.application'
}
android {
...
defaultConfig {
// アプリのパッケージ名、コンソール上のものと一致する必要があります
applicationId "com.engagelab.app"
...
manifestPlaceholders = [
// AppKey、コンソール上のものと一致し、パッケージ名と1対1の関係があります
ENGAGELAB_PRIVATES_APPKEY : "Your appkey",
// EngageLabのアプリチャンネル、チャンネル統計に使用
ENGAGELAB_PRIVATES_CHANNEL: "developer",
// EngageLabのプロセス、EngageLab SDKが動作するプロセス。注意: 開始時
ENGAGELAB_PRIVATES_PROCESS: ":remote"
]
}
}
dependencies {
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
}
このコードブロックはフローティングウィンドウ内に表示されます
3. 必要なコンポーネントの作成
package com.engagelab.app.component;
import com.engagelab.privates.common.component.MTCommonService;
/**
* 開発者はMTCommonServiceを継承し、長時間接続を維持することができます。
* <p>
* 空の実装で十分です。
*/
public class UserService extends MTCommonService {
}
package com.engagelab.app.component;
import com.engagelab.privates.common.component.MTCommonService;
/**
* 開発者はMTCommonServiceを継承し、長時間接続を維持することができます。
* <p>
* 空の実装で十分です。
*/
public class UserService extends MTCommonService {
}
このコードブロックはフローティングウィンドウ内に表示されます
package com.engagelab.app.component;
import android.content.Context;
import android.widget.Toast;
import java.util.Arrays;
import com.engagelab.app.common.ExampleGlobal;
import com.engagelab.app.listener.StatusObserver;
import com.engagelab.app.log.ExampleLogger;
import com.engagelab.privates.common.component.MTCommonReceiver;
import com.engagelab.privates.core.api.MTCorePrivatesApi;
import com.engagelab.privates.core.api.WakeMessage;
import com.engagelab.privates.push.api.CustomMessage;
import com.engagelab.privates.push.api.MobileNumberMessage;
import com.engagelab.privates.push.api.NotificationMessage;
import com.engagelab.privates.push.api.PlatformTokenMessage;
/**
* 開発者はMTCommonReceiverを継承し、SDKのメソッドコールバックを取得できます。
* <p>
* すべてのコールバックはメインスレッドで行われます。
*/
public class UserReceiver extends MTCommonReceiver {
private static final String TAG = "UserReceiver";
/**
* 長時間接続ステータスのコールバック
*
* @param context nullではない
* @param enable 接続されているかどうか
*/
@Override
public void onConnectStatus(Context context, boolean enable) {
ExampleLogger.i(TAG, "onConnectState:" + enable);
if (enable) { // 長時間接続が一度成功すれば、後でどこでも呼び出すことができます
MTMAApi.getInstance(this).start(new CallBack() {
@Override
public void onCallBack(int code, String msg) {
Log.e(TAG, "start code:" + code);
Log.e(TAG, "startmsg:" + msg);
}
});
}
}
}
package com.engagelab.app.component;
import android.content.Context;
import android.widget.Toast;
import java.util.Arrays;
import com.engagelab.app.common.ExampleGlobal;
import com.engagelab.app.listener.StatusObserver;
import com.engagelab.app.log.ExampleLogger;
import com.engagelab.privates.common.component.MTCommonReceiver;
import com.engagelab.privates.core.api.MTCorePrivatesApi;
import com.engagelab.privates.core.api.WakeMessage;
import com.engagelab.privates.push.api.CustomMessage;
import com.engagelab.privates.push.api.MobileNumberMessage;
import com.engagelab.privates.push.api.NotificationMessage;
import com.engagelab.privates.push.api.PlatformTokenMessage;
/**
* 開発者はMTCommonReceiverを継承し、SDKのメソッドコールバックを取得できます。
* <p>
* すべてのコールバックはメインスレッドで行われます。
*/
public class UserReceiver extends MTCommonReceiver {
private static final String TAG = "UserReceiver";
/**
* 長時間接続ステータスのコールバック
*
* @param context nullではない
* @param enable 接続されているかどうか
*/
@Override
public void onConnectStatus(Context context, boolean enable) {
ExampleLogger.i(TAG, "onConnectState:" + enable);
if (enable) { // 長時間接続が一度成功すれば、後でどこでも呼び出すことができます
MTMAApi.getInstance(this).start(new CallBack() {
@Override
public void onCallBack(int code, String msg) {
Log.e(TAG, "start code:" + code);
Log.e(TAG, "startmsg:" + msg);
}
});
}
}
}
このコードブロックはフローティングウィンドウ内に表示されます
4. AndroidManifest.xmlの設定
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.engagelab.app">
<!-- 必須、ネットワーク権限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- オプション、通知の振動 -->
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:name="com.engagelab.app.MainApplication"
android:allowBackup="false"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.MT"
android:usesCleartextTraffic="true"
tools:targetApi="m"> <!-- HTTPリクエストを使用する場合、HTTPの使用を許可する必要があります -->
.....................................................................................................
<!-- このクラスには長時間接続機能があるため、パッケージ名にEngagelabという単語が含まれるサービスは、携帯電話メーカーの省電力最適化中に直接終了される可能性があります -->
<!-- したがって、開発者はcom.engagelab.app.component.MTCommonServiceを継承して長時間接続の生存率を向上させ、メッセージ到達率を向上させる必要があります -->
<service
android:name="com.engagelab.app.component.UserService"
android:exported="false"
android:process="${ENGAGELAB_PRIVATES_PROCESS}">
<intent-filter>
<action android:name="com.engagelab.privates.intent.USER_SERVICE" />
</intent-filter>
</service>
<!-- 長時間接続ステータス/通知スイッチステータス/通知メッセージ到達/通知メッセージクリック/通知メッセージ削除/カスタムメッセージ/ベンダートークンコールバックを含むEngagelabサービスのコールバックを受信するために使用 -->
<!-- サブプロセスを設定する必要はありません。このコールバックはメインプロセスで行われ、ビジネス操作に便利です -->
<receiver
android:name="com.engagelab.app.component.UserReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.engagelab.privates.intent.USER_RECEIVER" />
</intent-filter>
</receiver>
</application>
</manifest>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.engagelab.app">
<!-- 必須、ネットワーク権限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- オプション、通知の振動 -->
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:name="com.engagelab.app.MainApplication"
android:allowBackup="false"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.MT"
android:usesCleartextTraffic="true"
tools:targetApi="m"> <!-- HTTPリクエストを使用する場合、HTTPの使用を許可する必要があります -->
.....................................................................................................
<!-- このクラスには長時間接続機能があるため、パッケージ名にEngagelabという単語が含まれるサービスは、携帯電話メーカーの省電力最適化中に直接終了される可能性があります -->
<!-- したがって、開発者はcom.engagelab.app.component.MTCommonServiceを継承して長時間接続の生存率を向上させ、メッセージ到達率を向上させる必要があります -->
<service
android:name="com.engagelab.app.component.UserService"
android:exported="false"
android:process="${ENGAGELAB_PRIVATES_PROCESS}">
<intent-filter>
<action android:name="com.engagelab.privates.intent.USER_SERVICE" />
</intent-filter>
</service>
<!-- 長時間接続ステータス/通知スイッチステータス/通知メッセージ到達/通知メッセージクリック/通知メッセージ削除/カスタムメッセージ/ベンダートークンコールバックを含むEngagelabサービスのコールバックを受信するために使用 -->
<!-- サブプロセスを設定する必要はありません。このコールバックはメインプロセスで行われ、ビジネス操作に便利です -->
<receiver
android:name="com.engagelab.app.component.UserReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.engagelab.privates.intent.USER_RECEIVER" />
</intent-filter>
</receiver>
</application>
</manifest>
このコードブロックはフローティングウィンドウ内に表示されます
5. 初期化
package com.engagelab.app;
import android.app.Application;
import com.engagelab.privates.core.api.Address;
import com.engagelab.privates.core.api.MTCorePrivatesApi;
import com.engagelab.privates.push.api.MTPushPrivatesApi;
public class MainApplication extends Application {
private static final String TAG = "MainApplication";
@Override
public void onCreate() {
super.onCreate();
// application.onCreateで設定する必要があります。プロセスを判断しないでください。SDKには内部で独自の判断があります。
MTCorePrivatesApi.configDebugMode(this, true);
// プッシュの初期化
// MTPushPrivatesApi.init(this);
}
}
package com.engagelab.app;
import android.app.Application;
import com.engagelab.privates.core.api.Address;
import com.engagelab.privates.core.api.MTCorePrivatesApi;
import com.engagelab.privates.push.api.MTPushPrivatesApi;
public class MainApplication extends Application {
private static final String TAG = "MainApplication";
@Override
public void onCreate() {
super.onCreate();
// application.onCreateで設定する必要があります。プロセスを判断しないでください。SDKには内部で独自の判断があります。
MTCorePrivatesApi.configDebugMode(this, true);
// プッシュの初期化
// MTPushPrivatesApi.init(this);
}
}
このコードブロックはフローティングウィンドウ内に表示されます