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