打开半屏小程序
微信文档链接:打开半屏小程序 | 微信开放文档。介绍:当小程序需要打开另一个小程序让用户进行快捷操作时,可将要打开的小程序以半屏的形态跳转。简单来说,就是A小程序打开半屏的B小程序。
第一步
小程序管理后台中账号设置,到第三方设置中最下面的半屏小程序管理。如果是A打开B小程序,需要在A小程序中 我调用的 这里添加,然后在B小程序中通过管理员授权。成功后半屏小程序管理中会显示。
第二步
全局配置:文档介绍:2.23.1以下版本基础库,开发者需要在全局配置app.json
的embeddedAppIdList
字段中声明需要半屏跳转的小程序,若不配置将切换为普通的小程序跳转小程序。2.23.1及以上版本起无需配置。
这里直接复制粘贴就行
{
"embeddedAppIdList": ["wxe5f52902cf4de896"]
}
第三步
调用wx.openEmbeddedMiniProgram(方法链接:wx.openEmbeddedMiniProgram(Object object) | 微信开放文档)半屏跳转小程序。在A小程序中:
第四步
在B小程序中获取A小程序传递过来的参数:使用wx.getLaunchOptionsSync(方法链接:Object wx.getEnterOptionsSync() | 微信开放文档)。这里要区分是不是小游戏,如果跳转的不是小游戏,可以在App.onLaunch
,App.onShow
中获取数据,跳转的是小游戏则在wx.onShow、wx.getLaunchOptionsSync中获取数据。
这里获取参数建议在onShow中使用wx.getEnterOptionsSync(),getLaunchOptionsSync方法可能导致只会获取到第一次的参数。
第五步
被半屏打开的小程序可以以通过调用wx.navigateBackMiniProgram返回上一个小程序。
extraData是返回给宿主小程序的数据。
第六步
宿主小程序如何接受数据:
onShow(options) {
if (options.referrerInfo && options.referrerInfo.extraData) {
const { result, orderId } = options.referrerInfo.extraData;
console.log(`订单 ${orderId} 结果: ${result}`);
// 更新全局数据或跳转到订单详情页
}
}
常见问题
Q1:宿主小程序未触发 onShow
?
-
确保半屏小程序是通过
wx.openEmbeddedMiniProgram
或wx.navigateToMiniProgram
打开的。
Q2:数据丢失怎么办?
-
在
onShow
中立即将数据存入globalData
或wx.setStorageSync
。
Q3:如何区分不同来源的半屏小程序?
-
在
extraData
中添加标识字段,例如source: 'payment'
。