Android MA 功能整合指南

適用版本

本文適用於 5.5.0 及以後版本的獨立版 MA SDK。

從 5.5.0 開始,MA 不再依賴 AppPush,可以單獨整合和初始化。 MA AppKey 與 Push AppKey 相互獨立,可以相同,也可以不同。

5.5.0 先前的融合版整合方式請查看5.5.0 先前整合指南

1. 導入 SDK

手動導入

將發布包中的 mt-sdk-ma-5.5.0.aar 加入應用工程的 libs 目錄:

dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') }
              
              dependencies {
    implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
}

            
此代碼塊在浮窗中顯示

Maven 導入

dependencies { implementation 'com.engagelab.plugin:oth_ma:5.5.0' }
              
              dependencies {
    implementation 'com.engagelab.plugin:oth_ma:5.5.0'
}

            
此代碼塊在浮窗中顯示

如果同時使用 AppPush,再按 AppPush 文件引入 engagelab 主包;僅使用 MA 時不需要引入 AppPush 主包。

2. 權限配置

AndroidManifest.xml 中聲明網路權限:

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
              
              <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

            
此代碼塊在浮窗中顯示

獨立版 MA 不需要設定 ENGAGELAB_PRIVATES_APPKEYENGAGELAB_PRIVATES_CHANNEL、Push Service 或 Push Receiver。若同時使用 AppPush,仍需依照 AppPush 整合文件完成對應設定。

3. 初始化 SDK

建議在主進程的 Application.onCreate() 中初始化。初始化使用 MA AppKey,不需要等待 AppPush 初始化或註冊成功。

import android.app.Application; import com.engagelab.privates.push.oth.ma.api.MTMAApi; import com.engagelab.privates.push.oth.ma.api.MTMAConfig; import com.engagelab.privates.push.oth.ma.api.MTMAInitResult; import com.engagelab.privates.push.oth.ma.api.MTMAInitResultCallback; public class MainApplication extends Application { @Override public void onCreate() { super.onCreate(); MTMAApi.configDebugMode(true); MTMAConfig config = new MTMAConfig("your MA AppKey"); MTMAApi.getInstance(this).start(config, new MTMAInitResultCallback() { @Override public void onResult(MTMAInitResult result) { if (result.isSuccess()) { String euid = result.getEuid(); String maRid = result.getMaRid(); } else { int code = result.getCode(); String message = result.getMessage(); } } }); } }
              
              import android.app.Application;

import com.engagelab.privates.push.oth.ma.api.MTMAApi;
import com.engagelab.privates.push.oth.ma.api.MTMAConfig;
import com.engagelab.privates.push.oth.ma.api.MTMAInitResult;
import com.engagelab.privates.push.oth.ma.api.MTMAInitResultCallback;

public class MainApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        MTMAApi.configDebugMode(true);
        MTMAConfig config = new MTMAConfig("your MA AppKey");
        MTMAApi.getInstance(this).start(config, new MTMAInitResultCallback() {
            @Override
            public void onResult(MTMAInitResult result) {
                if (result.isSuccess()) {
                    String euid = result.getEuid();
                    String maRid = result.getMaRid();
                } else {
                    int code = result.getCode();
                    String message = result.getMessage();
                }
            }
        });
    }
}

            
此代碼塊在浮窗中顯示

初始化說明

  • MA AppKey 必填。
  • Android MA SDK 只支援在宿主應用主進程初始化。在非主進程呼叫 start 會透過回呼回傳失敗,不會發起網路請求。
  • 初始化成功前,除初始化前配置介面外,其他 MA 業務 API 不可用。
  • 建議所有 MA 對外 API 均在主程序呼叫。非主進程不會共享主進程的初始化狀態,業務呼叫不會轉送給主進程。
  • 初始化成功後也可透過 getEuid()getMaRid() 取得目前值。

運行時切換 MA AppKey

同一進程支援在運行時切換 MA AppKey。請在上一次初始化回呼完成後,使用新 AppKey 再次呼叫 start

MTMAConfig newConfig = new MTMAConfig("new MA AppKey"); MTMAApi.getInstance(this).start(newConfig, callback);
              
              MTMAConfig newConfig = new MTMAConfig("new MA AppKey");
MTMAApi.getInstance(this).start(newConfig, callback);

            
此代碼塊在浮窗中顯示

切換期間其他 MA 業務 API 暫不可用;新 AppKey 初始化成功後,後續事件和使用者資料歸屬新 AppKey。如果新 AppKey 初始化失敗,SDK 不會自動回退到舊 AppKey,需要使用有效 AppKey 重新呼叫 start

初始化時設定使用者標識

UserIdentity identity = new UserIdentity(); identity.setUserId("your user id"); identity.setAnonymousId("your anonymous id"); identity.setEmail("user@example.com"); identity.setPhone("+8613800138000"); MTMAConfig config = new MTMAConfig("your MA AppKey", identity); MTMAApi.getInstance(this).start(config, callback);
              
              UserIdentity identity = new UserIdentity();
identity.setUserId("your user id");
identity.setAnonymousId("your anonymous id");
identity.setEmail("user@example.com");
identity.setPhone("+8613800138000");

MTMAConfig config = new MTMAConfig("your MA AppKey", identity);
MTMAApi.getInstance(this).start(config, callback);

            
此代碼塊在浮窗中顯示

其中 setEmailsetPhone 從 5.5.0 版本開始支援。

使用者標識欄位規則:user_id 去除首尾空格後不能為空,最長 255 個 Unicode 字元,且不能為 0nullundefinednan(忽略大小寫);anonymous_id 去除首尾空格後不能為空,最長 256 個 Unicode 字元;email 不能為空、最長 256 個 Unicode 字元,必須且只能包含一個 @@ 前後皆不能為空,且不能包含空格、換行或 Tab;phone 必須符合 E.164 格式,以 + 開頭,國家碼首位為 1–9,之後包含 1–14 位數字。校驗失敗時 SDK 不發送身分請求,並透過回呼傳回 code = -3

4. 同時使用 AppPush

在 MA 控制台設定行動裝置資料來源時,請選擇同時使用 AppPush,並選擇實際存取的 AppPush 應用程式。初始化 AppPush 時,請使用所選應用程式的 AppKey。

MA 與 AppPush 分別初始化,不要求固定順序。 AppPush 註冊成功並取得 Push RID 後,MA SDK 會自動綁定 AppPush 頻道。

AppPush 未整合、尚未註冊或通道綁定失敗,不影響 MA 初始化、事件擷取和上報。

注意:MA RID 與 AppPush RID 是兩個獨立的裝置識別碼。請分別透過對應 SDK 獲取和使用,不要將其中一個作為另一個使用。

5. 設定通道聯繫ID

如需為第三方 Push 通道設定通道聯繫ID,請在 MA 初始化成功後呼叫:

List<String> values = Collections.singletonList("push rid or token"); MTMAApi.getInstance(this).setChannelValue(136L, values, new CallBack() { @Override public void onCallBack(int code, String message) { // code == 0 means success } });
              
              List<String> values = Collections.singletonList("push rid or token");
MTMAApi.getInstance(this).setChannelValue(136L, values, new CallBack() {
    @Override
    public void onCallBack(int code, String message) {
        // code == 0 means success
    }
});

            
此代碼塊在浮窗中顯示
  • channelId:MA 控制台配置的第三方 Push 通道 ID,必須大於 0。
  • values:通道聯繫ID的值清單(例如 RID 或 Token),不能為空,清單元素也不能為空。
  • 通道聯繫ID變更後,需要再次呼叫介面更新。
  • 此介面用於設定第三方 Push 通道聯繫ID;AppPush 通道由 SDK 自動綁定。

6. 舊版升級說明

  • 升級到 5.5.0 後,必須使用 MTMAConfig 明確傳入 MA AppKey。
  • 不再需要等待 AppPush 長連線或註冊成功後呼叫 MA start
  • start(CallBack)start(UserIdentity, CallBack) 已廢棄,獨立版請使用 start(MTMAConfig, MTMAInitResultCallback)
  • 原來同時使用 AppPush 和 MA 的應用,可繼續整合 AppPush,但兩者需要分別初始化。
  • MA RID 與 AppPush RID 是兩個獨立的裝置識別碼。請分別透過對應 SDK 獲取和使用,不要將其中一個作為另一個使用。

其他業務介面請查看 API 指南

Icon Solid Transparent White Qiyu
聯繫銷售