# LaunchWxaApp

建议使用 WMPFMiniProgramApi.launchMiniProgramWMPFMiniProgramApi.warmUpApp 接口.

用于拉起某个小程序

# 调用参数

属性 说明 最低版本
appId 小程序的 appId
isNativeView 无意义,请忽略
path 要启动的小程序的页面路径
appType 0: 正式版 1: 开发版/测试版 2: 体验版
forceRequestFullscreen 强制小程序全屏运行,默认 false。
landscapeMode 见下表 WMPF 1.0.1
enterPictureInPicture 进入画中画模式,默认 false。画中画模式需要接入方的 ROM 支持,支持方式参考:https://source.android.google.cn/devices/tech/display/pip?hl=zh-cn
displayId 从 Android DisplayManager 中获取到的 displayId,用于指定小程序显示的屏幕。在某些双屏设备上有用 WMPF 1.0.4
isForPreWarmLaunch 使用预热模式,默认 false。预热模式下,小程序会在后台启动小程序并一直存活,以达到下次启动时无需初始化的效果。预热模式下只有 appId / path / appType / displayId 会生效,传入特定的 displayId 可以做到用指定屏幕的宽高来测量小程序的渲染内容 WMPF 1.0.4

LandscapeMode

枚举值 说明
0 默认展示方式,与微信客户端保持一致
1 适用于强制横屏,且无法转动屏幕的设备(比如车机)
2 兼容模式,小程序内容将强制 WMPFUiApi.setWindowRatio 设置的比例显示(声明了resizable=true的小程序除外)
3 强制兼容模式(声明了resizable=true的小程序也不例外)

# 返回参数

无参数

# 示例代码

val request = WMPFLaunchWxaAppRequest() request.baseRequest = WMPFBaseRequestHelper.checked() // Launch target(wxa appId) // WARNING: hostAppIds and wxaAppIds are binded sets. request.appId = launchAppId // 填入小程序AppId, 且需要与hostAppId有绑定关系 request.path = path request.appType = appType // 0-正式版 1-开发版 2-体验版 // mayRunInLandscapeCompatMode Deprecated // request.mayRunInLandscapeCompatMode = true request.forceRequestFullscreen = false request.landscapeMode = 2 request.displayId = 0 // 小程序想要显示的目标displayId,适用于某些双屏设备 DisplayManager.getDisplays()[0].getDisplayId() Log.i( TAG, "launchWxaApp: appId = " + launchAppId + ", hostAppID = " + BuildConfig.HOST_APPID + ", deviceId = " + DeviceInfo.deviceId ) val result = WMPFIPCInvoker.invokeAsync<IPCInvokerTask_LaunchWxaApp, WMPFLaunchWxaAppRequest, WMPFLaunchWxaAppResponse>( request, IPCInvokerTask_LaunchWxaApp::class.java ) { response -> if (isSuccess(response)) { it.onSuccess(response) } else { it.onError(TaskErrorException(createTaskError(response))) } } if (!result) { it.onError(Exception("invoke launchWxaApp fail")) } 

# 注意

  • 如果调用超时,未响应。一般是 WMPF Service 未正确启动,导致无法响应,可监听 IPCInvokeCallbackEx 相关 error 。
  • 如果弹窗提示 Error Loading WxaAttrs,请确认
    • 可能打开正式版(appType==0),但小程序没有发布过正式版本。小程序正式上线前请根据需要使用 1(开发版)或 2(体验版)。
    • 可能打开开发版(appType==1),但 WMPF 端未扫码登录,或登录用户无开发版权限,或该用户未在工具上上传开发版。
    • 可能打开体验版(appType==2),但 WMPF 端未扫码登录,或登录用户无体验版权限,或小程序当前无体验版。
  • 如果弹窗提示 err:TRANSFER, errCode:-3,一般是当前移动应用无打开对应小程序的权限,请确认