微信小程序 ==== 半屏打开小程序

目录

打开半屏小程序

调用流程

打开半屏小程序

半屏小程序环境判断

返回原小程序

使用限制

wx.openEmbeddedMiniProgram

功能描述

参数

wx.navigateBackMiniProgram

功能描述

示例代码

[Object wx.getEnterOptionsSync()](#Object wx.getEnterOptionsSync())

功能描述

返回值

[返回有效 referrerInfo 的场景](#返回有效 referrerInfo 的场景)

[不同 apiCategory 场景下的 API 限制](#不同 apiCategory 场景下的 API 限制)

注意


打开半屏小程序

从基础库 2.20.1 开始支持

当小程序需要打开另一个小程序让用户进行快捷操作时,可将要打开的小程序以半屏的形态跳转。

调用流程

打开半屏小程序

  1. 2.23.1以下版本基础库 ,开发者需要在全局配置app.jsonembeddedAppIdList字段中声明需要半屏跳转的小程序,若不配置将切换为普通的小程序跳转小程序。2.23.1及以上版本起无需配置

配置示例:

{
  "embeddedAppIdList": ["wxe5f52902cf4de896"]
}
  1. 开发者通过调用wx.openEmbeddedMiniProgram半屏跳转小程序。

半屏小程序环境判断

开发者可以通过调用wx.getEnterOptionsSync读取apiCategory参数,当值为embedded时,可以判断此时小程序被半屏打开。

返回原小程序

被半屏打开的小程序可以以通过调用wx.navigateBackMiniProgram返回上一个小程序。

使用限制

使用过程有以下限制,若不符合以下所有条件将被自动切换为普通的小程序跳转小程序,不影响用户使用:

  1. 被半屏跳转的小程序需要通过来源小程序的调用申请,开发者可在 小程序管理后台「设置」-「第三方设置」-「半屏小程序管理」板块发起申请,最多可以申请10个小程序;
  2. 2.23.1版本以下基础库,被半屏打开的小程序需要在app.jsonembeddedAppIdList字段中声明;
  3. 当前小程序需为竖屏;
  4. 被半屏跳转的小程序需为非个人主体小程序(不含小游戏)。

wx.openEmbeddedMiniProgram

基础库 2.20.1 开始支持,低版本需做兼容处理
Promise 风格 调用:支持

需要页面权限:当前是插件页面时,宿主小程序不能调用该接口,反之亦然

小程序插件 :支持,需要小程序基础库版本不低于 2.26.2

功能描述

打开半屏小程序。接入指引请参考 半屏小程序能力

参数

属性 类型 默认值 必填 说明 最低版本
appId string 要打开的小程序 appId
path string 打开的页面路径,如果为空则打开首页。path 中 ? 后面的部分会成为 query,在小程序的 App.onLaunchApp.onShowPage.onLoad 的回调函数或小游戏的 wx.onShow 回调函数、wx.getLaunchOptionsSync 中可以获取到 query 数据。对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
extraData object 需要传递给目标小程序的数据,目标小程序可在 App.onLaunchApp.onShow 中获取到这份数据。如果跳转的是小游戏,可以在 wx.onShowwx.getLaunchOptionsSync 中可以获取到这份数据数据。
envVersion string release 要打开的小程序版本。仅在当前小程序为开发版或体验版时此参数有效。如果当前小程序是正式版,则打开的小程序必定是正式版。
合法值 说明 --------- -----
shortLink string 小程序链接,当传递该参数后,可以不传 appId 和 path。链接可以通过【小程序菜单】->【复制链接】获取。仅 verify=binding 支持。
verify string binding 校验方式。 2.24.3
合法值 说明 -------------- -------------------------------------------------------------------------------------------------------------
noRelaunchIfPathUnchanged boolean false 不reLaunch目标小程序,直接打开目标跳转的小程序退后台时的页面,需满足以下条件:1. 目标跳转的小程序生命周期未被销毁;2. 且目标当次启动的path、query与上次启动相同,apiCategory以wx.getApiCategory接口的返回结果为准。 2.24.0
allowFullScreen boolean false 打开的小程序是否支持全屏 2.33.0
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)
wx.openEmbeddedMiniProgram({
  appId: '',// 你要打开的小程序appid
  path: 'page/index/index', // 打开的页面路径,如果为空则打开首页
  extraData: {},// 需要传递给目标小程序的数据
  envVersion: 'develop',// 要打开的小程序版本 develop 开发版 trial 体验版 release 正式版
  success(res) {
    // 打开成功
  },
  fail(e) {
    // 打开失败
  },
})

wx.navigateBackMiniProgram

基础库 1.3.0 开始支持,低版本需做兼容处理
Promise 风格 调用:支持

需要页面权限:当前是插件页面时,宿主小程序不能调用该接口,反之亦然

小程序插件:不支持

微信 Windows 版:支持

微信 Mac 版:支持

功能描述

返回到上一个小程序。只有在当前小程序是被其他小程序打开时可以调用成功

注意:微信客户端 iOS 6.5.9,Android 6.5.10 及以上版本支持

属性 类型 默认值 必填 说明
extraData Object {} 需要返回给上一个小程序的数据,上一个小程序可在 App.onShow 中获取到这份数据。 详情
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

wx.navigateBackMiniProgram({
  extraData: {
    foo: 'bar'
  },
  success(res) {
    // 返回成功
  }
})

实测小程序B换成体验版,就OK了,开发版在安卓上有问题

Object wx.getEnterOptionsSync()

基础库 2.9.4 开始支持,低版本需做兼容处理
小程序插件 :支持,需要小程序基础库版本不低于 2.9.4

微信 Windows 版:支持

微信 Mac 版:支持

功能描述

获取本次小程序启动时的参数。如果当前是冷启动,则返回值与 App.onLaunch 的回调参数一致;如果当前是热启动,则返回值与 App.onShow 一致。

返回值

启动参数

属性 类型 说明 最低版本
path string 启动小程序的路径 (代码包路径)
scene number 启动小程序的场景值
query Object 启动小程序的 query 参数
shareTicket string shareTicket,详见获取更多转发信息
referrerInfo Object 来源信息。从另一个小程序、公众号或 App 进入小程序时返回。否则返回 {}。(参见后文注意)
结构属性 类型
forwardMaterials Array.<Object> 打开的文件信息数组,只有从聊天素材场景打开(scene为1173)才会携带该参数
结构属性 类型
chatType number 从微信群聊/单聊打开小程序时,chatType 表示具体微信群聊/单聊类型
合法值 说明
apiCategory string API 类别 2.20.0
合法值 说明

返回有效 referrerInfo 的场景

场景值 场景 appId含义
1020 公众号 profile 页相关小程序列表 来源公众号
1035 公众号自定义菜单 来源公众号
1036 App 分享消息卡片 来源App
1037 小程序打开小程序 来源小程序
1038 从另一个小程序返回 来源小程序
1043 公众号模板消息 来源公众号

不同 apiCategory 场景下的 API 限制

X 表示 API 被限制无法使用;不在表格中的 API 不限制。

default nativeFunctionalized browseOnly embedded
navigateToMiniProgram X X
openSetting X
<button open-type="share"> X X X
<button open-type="feedback"> X
<button open-type="open-setting"> X
openEmbeddedMiniProgram X X X

注意

部分版本在无 referrerInfo 的时候会返回 undefined,建议使用 options.referrerInfo && options.referrerInfo.appId 进行判断。

  wx.showModal({
        title: "提示",
        content: "提交成功",
        showCancel: false,
        success: function (res) {
          if (res.confirm) {
            const enterOptionsQuery = wx.getEnterOptionsSync().apiCategory;
            console.log(enterOptionsQuery, "获取的参数");
            if (enterOptionsQuery == "embedded") {
              console.log(1111);

              wx.navigateBackMiniProgram({
                success(res) {
                  console.log(res, "返回成功");
                },
                fail: (err) => {
                  console.log(err);
                },
              });
              return;
            }

            wx.navigateBack({
              delta: 1,
            });
          }
        },
      });
相关推荐
.生产的驴4 小时前
SpringBoot 对接第三方登录 手机号登录 手机号验证 微信小程序登录 结合Redis SaToken
java·spring boot·redis·后端·缓存·微信小程序·maven
汤姆yu9 小时前
基于微信小程序的乡村旅游系统
微信小程序·旅游·乡村旅游
计算机徐师兄9 小时前
基于TP5框架的家具购物小程序的设计与实现【附源码、文档】
小程序·php·家具购物小程序·家具购物微信小程序·家具购物
曲辒净10 小时前
微信小程序实现二维码海报保存分享功能
微信小程序·小程序
朽木成才11 小时前
小程序快速实现大模型聊天机器人
小程序·机器人
peachSoda711 小时前
随手记:小程序使用uni.createVideoContext视频无法触发播放
小程序
何极光11 小时前
uniapp小程序样式穿透
前端·小程序·uni-app
小墨&晓末12 小时前
【PythonGui实战】自动摇号小程序
python·算法·小程序·系统安全
oil欧哟1 天前
🤔认真投入一个月做的小程序,能做成什么样子?有人用吗?
前端·vue.js·微信小程序
汤姆yu1 天前
基于微信小程序的消防隐患在线举报系统
微信小程序·小程序·消防隐患