初始化 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) | 预览/真机调试扫码,并添加启动参数。 |