初始化 API

方式一

  1. 通过 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();
        }
    }
  2. AndroidManifest.xml 中添加 meta 配置:

    <meta-data
        android:name="mpaas.init.param"
        android:value="com.mpaas.demo.MriverInitImpl" />
  3. 添加 com.mpaas.demo.MriverInitImpl类,实现 MPInitParamManifest

    public class MriverInitImpl implements com.mpaas.MPInitParamManifest {
        @Override
        public MPInitParam initParam() {
            MriverInitParam mriverInitParam = createInitParams();
            return MPInitParam.obtain().addComponentInitParam(mriverInitParam);
        }
    }

方式二

通过 MPInitMPInit.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)

设置 userId,用于调试、预览白名单。

void startApp(String appId)

根据 appId 启动小程序。

void startApp(Activity activity, String appId, Bundle startParams)

根据 appId 和参数启动小程序。

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)

更新特定小程序。

appList 为小程序 ID 和本地版本号。后台配置下载,更新完成后自动下载安装。

根据需要,可以提前更新,优化首次加载性能。

void updateApp(String appId, String targetVersion, UpdateAppCallback callback)

更新到指定版本。

根据需要

void downloadAppPackage(String appId)

下载小程序。

根据需要

AppModel getAppModel(String appId)

获取本地已有小程序信息。

根据需要

void enableVerify(String type, String publicRsa)

开启验签。

  • debug:默认关闭。

  • release:默认开启。

必须调用,根据选择开启或者关闭

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)

设置 useragent

根据需要

void enableDebugConsole

开启调试面板。

根据需要

MriverDebug 调试 API

方法

描述

是否必须调用

void setWssHost(String wssHost)

设置真机调试的 wss 地址。

真机调试时必须调用

void debugAppByScan(Activity activity)

预览/真机调试扫码。

预览和真机调试时必须调用

void debugAppByScan(final Activity activity, Bundle bundle)

预览/真机调试扫码,并添加启动参数。