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

小程序 0

 

目录

打开半屏小程序

调用流程

打开半屏小程序

半屏小程序环境判断

返回原小程序

使用限制

wx.openEmbeddedMiniProgram

功能描述

参数

wx.navigateBackMiniProgram

功能描述

示例代码

Object wx.getEnterOptionsSync()

功能描述

返回值

返回有效 referrerInfo 的场景

不同 apiCategory 场景下的 API 限制

注意


打开半屏小程序

从基础库 2.20.1 开始支持

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

avatar

调用流程

打开半屏小程序

  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

功能描述

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

参数

属性类型默认值必填说明最低版本
appIdstring要打开的小程序 appId
pathstring打开的页面路径,如果为空则打开首页。path 中 ? 后面的部分会成为 query,在小程序的 App.onLaunchApp.onShow 和 Page.onLoad 的回调函数或小游戏的 wx.onShow 回调函数、wx.getLaunchOptionsSync 中可以获取到 query 数据。对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
extraDataobject需要传递给目标小程序的数据,目标小程序可在 App.onLaunchApp.onShow 中获取到这份数据。如果跳转的是小游戏,可以在 wx.onShow、wx.getLaunchOptionsSync 中可以获取到这份数据数据。
envVersionstringrelease要打开的小程序版本。仅在当前小程序为开发版或体验版时此参数有效。如果当前小程序是正式版,则打开的小程序必定是正式版。
合法值说明
develop开发版
trial体验版
release正式版
shortLinkstring小程序链接,当传递该参数后,可以不传 appId 和 path。链接可以通过【小程序菜单】->【复制链接】获取。仅 verify=binding 支持。
verifystringbinding校验方式。2.24.3
合法值说明
binding校验小程序管理后台的绑定关系。
unionProduct校验目标打开链接是否为小程序联盟商品。
noRelaunchIfPathUnchangedbooleanfalse不reLaunch目标小程序,直接打开目标跳转的小程序退后台时的页面,需满足以下条件:1. 目标跳转的小程序生命周期未被销毁;2. 且目标当次启动的path、query与上次启动相同,apiCategory以wx.getApiCategory接口的返回结果为准。2.24.0
allowFullScreenbooleanfalse打开的小程序是否支持全屏2.33.0
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)

 

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 及以上版本支持

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

示例代码

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

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

Object wx.getEnterOptionsSync()

基础库 2.9.4 开始支持,低版本需做兼容处理。

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

微信 Windows 版:支持

微信 Mac 版:支持

功能描述

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

返回值

启动参数

属性类型说明最低版本
pathstring启动小程序的路径 (代码包路径)
scenenumber启动小程序的场景值
queryObject启动小程序的 query 参数
shareTicketstringshareTicket,详见获取更多转发信息
referrerInfoObject来源信息。从另一个小程序、公众号或 App 进入小程序时返回。否则返回 {}。(参见后文注意)
结构属性类型说明
appIdstring来源小程序、公众号或 App 的 appId
extraDataObject来源小程序传过来的数据,scene=1037或1038时支持
forwardMaterialsArray.<Object>打开的文件信息数组,只有从聊天素材场景打开(scene为1173)才会携带该参数
结构属性类型说明
typestring文件的mimetype类型
namestring文件名
pathstring文件路径(如果是webview则是url)
sizenumber文件大小
chatTypenumber从微信群聊/单聊打开小程序时,chatType 表示具体微信群聊/单聊类型
合法值说明
1微信联系人单聊
2企业微信联系人单聊
3普通微信群聊
4企业微信互通群聊
apiCategorystringAPI 类别2.20.0
合法值说明
default默认类别
nativeFunctionalized原生功能化,视频号直播商品、商品橱窗等场景打开的小程序
browseOnly仅浏览,朋友圈快照页等场景打开的小程序
embedded内嵌,通过打开半屏小程序能力打开的小程序

返回有效 referrerInfo 的场景

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

不同 apiCategory 场景下的 API 限制

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

defaultnativeFunctionalizedbrowseOnlyembedded
navigateToMiniProgramXX
openSettingX
<button open-type="share">XXX
<button open-type="feedback">X
<button open-type="open-setting">X
openEmbeddedMiniProgramXXX

注意

部分版本在无 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,            });          }        },      });

 

也许您对下面的内容还感兴趣: