# LaunchWxaApp
建议使用 WMPFMiniProgramApi.launchMiniProgram 或 WMPFMiniProgramApi.warmUpApp 接口.
用于拉起某个小程序
# 调用参数
属性 | 说明 | 最低版本 |
---|---|---|
appId | 小程序的 appId | |
无意义,请忽略 | ||
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
,一般是当前移动应用无打开对应小程序的权限,请确认- 已在「微信终端合作平台」上「绑定移动应用和小程序」
- 激活设备时,传入了正确的 hostAppId