随笔 - 2649  文章 - 2452  评论 - 0  阅读 - 74060

小程序 - (v1)LaunchWxaApp

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
    

    ,一般是当前移动应用无打开对应小程序的权限,请确认

posted on   AtlasLapetos  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示