初始化 API
方式一
通過 mPaaS 基礎組件初始化的方式,額外設置
mriver
參數。// 初始化 public class MyApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); // mPaaS 初始化回調設置 QuinoxlessFramework.setup(this, new IInitCallback() { @Override public void onPostInit() { // 初始化mPaaS其他組件邏輯 } }); } @Override public void onCreate() { super.onCreate(); // mPaaS 初始化 QuinoxlessFramework.init(); } }
在
AndroidManifest.xml
中添加meta
配置:<meta-data android:name="mpaas.init.param" android:value="com.mpaas.demo.MriverInitImpl" />
添加
com.mpaas.demo.MriverInitImpl
類,實現MPInitParamManifest
。public class MriverInitImpl implements com.mpaas.MPInitParamManifest { @Override public MPInitParam initParam() { MriverInitParam mriverInitParam = createInitParams(); return MPInitParam.obtain().addComponentInitParam(mriverInitParam); } }
方式二
通過 MPInit
的 MPInit.init(Application application, MPInitParam param)
方法初始化 API。
MP.init(this, createInitParams());
MPInitParam createInitParams() {
final MriverInitParam mriverInitParam = MriverInitParam.getDefault();
mriverInitParam.setMriverInitCallback(new MriverInitParam.MriverInitCallback() {
@Override
public void onInit() {
MPLogger.setUserId("MPTestCase");
if (com.alibaba.ariver.kernel.common.utils.ProcessUtils.isMainProcess()) {
// 小程序相關配置,比如自定義jsapi,titlebar等
Log.i("MriverApp", "init1");
Mriver.setConfig("mr_use_inner_net", "YES");
Mriver.setConfig("mr_request_support_gzip", "true");
Mriver.setConfig("mr_showShareMenuItem", "YES");
Mriver.setConfig("mriver_openlocation_hidden_default", "0");
Mriver.setConfig("mriver_support_chooseFile", "YES");
Mriver.setConfig("ta_worker_init_low_version_compat", (Build.VERSION.SDK_INT == 22 || Build.VERSION.SDK_INT == 21) ? "YES" : "NO");
MriverEngine.registerBridge(ShareApiBridgeExtension.class);
MriverEngine.registerBridge(SnapshotScreenApiBridgeExtension.class);
Mriver.enableAPM();
List<String> miniAppPoint = new ArrayList<>();
miniAppPoint.add(PageResumePoint.class.getName());
miniAppPoint.add(PageEnterPoint.class.getName());
Mriver.registerPoint(PageLifeCycleExtension.class.getName(), miniAppPoint);
RVProxy.set(PrepareNotifyProxy.class, new PrepareNotifyProxy() {
@Override
public void notify(String s, PrepareStatus prepareStatus) {
}
@Override
public void apmEvent(final String s, final String s1, final String s2, final String s3, final String s4) {
mUIHandler.post(new Runnable() {
@Override
public void run() {
if (APMActivity.logs == null) {
APMActivity.logs = new StringBuilder();
}
APMActivity.logs.append(s).append(" ").append(s1).append(" ").append(s2).append(" ").append(s3).append(" ").append(s4).append("\n");
if (TextUtils.equals(s, "MiniAppStart")
|| TextUtils.equals(s, "MiniPage_Load_T2")) {
Toast.makeText(MRiverApp.sApp, "startTime: " + s4, Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
Log.i(TAG, "registerPlugin");
MPNebula.registerH5Plugin(
PagePlugin.class.getName(),
null,
"page",
new String[]{"myapi2", H5Plugin.CommonEvents.H5_SESSION_EXIT, H5Plugin.CommonEvents.H5_PAGE_CLOSED, H5Plugin.CommonEvents.H5_PAGE_FINISHED, H5Plugin.CommonEvents.H5_PAGE_SHOULD_LOAD_URL}
);
MriverEngine.enableDebugConsole();
Mriver.setConfig("mriver_show_debug_menu_all", "YES");
Log.i("TTAATT", "hasInited");
}
@Override
public void onError(Exception e) {
Log.i("MriverApp", "init2");
}
});
mriverInitParam.setUCInitCallback(new MriverInitParam.UCInitCallback() {
@Override
public void onInit() {
sHasUCInit = true;
Log.i("TTAATT", "hasInitedUC");
}
@Override
public void onError(Exception e) {
}
});
return MPInitParam.obtain().setCallback(this).addComponentInitParam(mriverInitParam);
}
啟動和配置
Mriver 框架全局 API
方法 | 描述 | 是否必須調用 |
void setUserId(String userId) | 設置 | 是 |
void startApp(String appId) | 根據 | 是 |
void startApp(Activity activity, String appId, Bundle startParams) | 根據 | |
void setConfig(String key, String value) | 小程序容器配置,配置參數請參考 開關配置。 | 否 |
void forcePermissionCheck() | 強制權限校驗,開啟后小程序調用權限相關 API都會彈窗。 | 否 |
void setProxy(Class<T> proxyClazz, T proxyImpl) | 設置容器代理,定制相關邏輯請參考 功能配置。 | 否 |
void registerPoint(String className, List<String> pointsClassName) | 監聽容器各種切面,詳情請參考 功能配置。 | 否 |
MriverResource 資源管理
方法 | 描述 | 是否必須調用 |
void updateAll() | 更新所有小程序。 | 根據需要,不建議更新所有小程序,建議單獨更新特定小程序列表。 |
void updateApp(Map<String, String> appList, UpdateAppCallback callback) | 更新特定小程序。
| 根據需要,可以提前更新,優化首次加載性能。 |
void updateApp(String appId, String targetVersion, UpdateAppCallback callback) | 更新到指定版本。 | 根據需要 |
void downloadAppPackage(String appId) | 下載小程序。 | 根據需要 |
AppModel getAppModel(String appId) | 獲取本地已有小程序信息。 | 根據需要 |
void enableVerify(String type, String publicRsa) | 開啟驗簽。
| 必須調用,根據選擇開啟或者關閉 |
void disableVerify() | 關閉包體驗簽。 | |
void deleteApp(String appId) | 刪除本地小程序。 | 根據需要 |
void enableAPM() | 開啟 APM 上報。 | 根據需要 |
Map<String, List<AppModel>> getAllApp() | 獲取本地所有小程序。 | 根據需要 |
MriverEngine 引擎 API
方法 | 描述 | 是否必須調用 |
void registerBridge(Class<? extends BridgeExtension> bridgeClass) | 自定義 JSAPI。 | 根據需要 |
void sendToRender(Page page, String event, @Nullable JSONObject data, @Nullable SendToRenderCallback callback) | Native 發送消息給小程序。 | 根據需要 |
void setUserAgent(final String customUa) | 設置 | 根據需要 |
void enableDebugConsole | 開啟調試面板。 | 根據需要 |
MriverDebug 調試 API
方法 | 描述 | 是否必須調用 |
void setWssHost(String wssHost) | 設置真機調試的 wss 地址。 | 真機調試時必須調用 |
void debugAppByScan(Activity activity) | 預覽/真機調試掃碼。 | 預覽和真機調試時必須調用 |
void debugAppByScan(final Activity activity, Bundle bundle) | 預覽/真機調試掃碼,并添加啟動參數。 |