更新记录

1.0.0(2024-04-15)

uni-app x 环境 支持使用 uni-app 小程序

+支持打开,关闭,隐藏,展示等小程序管理方法

+支持小程序与宿主的双向参数传递


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 4.11,Android:5.0,iOS:不支持 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

uni-unimp

注意事项

  • 导入示例项目时,需要勾选 uni-app x

  • 导入插件后需提交云端打包后才能生效,真机运行时推荐使用自定义调试基座

  • 当前版本仅支持打开一个小程序实例,这个问题稍后会修复

用法说明

加载uniMP模块

在调用uni小程序API时需先调用uni.createUniMPContext方法加载uni小程序管理模块。
示例如下:

let mp = uni.createUniMPContext()
//通过mp可调用方法操作uni小程序
mp.openUniMP({
  appid:'小程序的appid'
});

installUniMP(options,callback)

通过wgt安装uni小程序到宿主App中,示例如下:

mp.installUniMP({
  appid: 'uni小程序的appid',
  wgtFile: 'uni小程序的wgt文件路径'
}, (ret)=>{
  console.log('installUniMP: '+JSON.stringify(ret));
});
options参数说明
属性 类型 默认值 必填 说明
appid String uni小程序的appid
wgtFile String wgt资源文件路径
password String wgt解压密码
callback回调参数说明
属性 类型 说明
type String "success" 表示成功, "fail" 表示失败
code Number 成功返回 0,失败返回相应 code 码
message String 失败描述

openUniMP(options,callback)

打开uni小程序,示例如下:

mp.openUniMP({
  appid: 'uni小程序的appid'
}, (ret)=>{
  console.log('openUniMP: '+JSON.stringify(ret));
});
options参数说明
属性 类型 默认值 必填 说明
appid String uni小程序的appid
icon String 启动小程序 splash 页面显示的图片,默认显示 app logo
path String 打开的页面路径,如果为空则打开首页。path 中 ? 后面的部分会成为 query,注意:传入此参数后应用会重启
extraData Object 需要传递给目标小程序的数据。小程序接收参考uni小程序中获取启动参数
fromAppid String 打开uni小程序的来源appid
callback回调参数说明
属性 类型 说明
type String "success" 表示成功, "fail" 表示失败
code Number 成功返回 0,失败返回相应 code 码
message String 失败描述

closeUniMP(appid,callback)

关闭已经运行的uni小程序,示例如下:

mp.closeUniMP('uni小程序的appid', (ret)=>{
  console.log('closeUniMP: '+JSON.stringify(ret));
});
参数说明
属性 类型 默认值 必填 说明
appid String uni小程序的appid
callback Function 关闭操作结果回调函数
callback回调参数说明
属性 类型 说明
type String "success" 表示成功, "fail" 表示失败
code Number 成功返回 0,失败返回相应 code 码
message String 失败描述

hideUniMP(appid,callback)

隐藏运行在前台的uni小程序,示例如下:

mp.hideUniMP('uni小程序的appid', (ret)=>{
  console.log('hideUniMP: '+JSON.stringify(ret));
});
参数说明
属性 类型 默认值 必填 说明
appid String uni小程序的appid
callback Function 隐藏操作结果回调函数
callback回调参数说明
属性 类型 说明
type String "success" 表示成功, "fail" 表示失败
code Number 成功返回 0,失败返回相应 code 码
message String 失败描述

showUniMP(appid,callback)

将运行在后台的uni小程序切换到前台显示,示例如下:

mp.showUniMP('uni小程序的appid', (ret)=>{
  console.log('showUniMP: '+JSON.stringify(ret));
});
参数说明
属性 类型 默认值 必填 说明
appid String uni小程序的appid
callback Function 显示操作结果回调函数
callback回调参数说明
属性 类型 说明
type String "success" 表示成功, "fail" 表示失败
code Number 成功返回 0,失败返回相应 code 码
message String 失败描述

getUniMPVersion(appid,callback)

获取安装的uni小程序版本信息,示例如下:

mp.getUniMPVersion('uni小程序的appid', (ret)=>{
  console.log('getUniMPVersion: '+JSON.stringify(ret));
});
参数说明
属性 类型 默认值 必填 说明
appid String uni小程序的appid
callback Function 获取版本信息回调函数
callback回调参数说明
属性 类型 说明
type String "success" 表示成功, "fail" 表示失败
code Number 成功返回 0,失败返回相应 code 码
message String 失败描述
versionInfo Object uni小程序的版本信息,参考versionInfo参数说明
versionInfo参数说明
属性 类型 说明
name String 应用版本名称 (对应 manifest.json 中的 versionName)
code String 应用版本号 (对应 manifest.json 中的 versionCode)

onUniMPEventReceive(callback)

监听uni小程序发送的event事件,建议在宿主App的应用生命周期onLaunch中进行监听。在uni小程序中调用uni.sendHostEvent发送event事件后触发。

示例如下:

export default {
  onLaunch: function() {
    console.log('Host App Launch');

    //监听uni小程序发送的事件
    mp.onUniMPEventReceive(ret=>{
            console.log('Receive event from MP: '+JSON.stringify(ret));
    });
  },
  //...
}
callback回调参数说明
属性 类型 说明
fromAppid String 发送事件的uni小程序的appid
event String 事件名称,uni小程序中调用sendHostEvent传入的event参数
data String 或 Object 传递的数据,小程序中调用sendHostEvent传入的data参数

sendUniMPEvent(appid,event,data,callback)

注:uni小程序必须处于运行状态,否则会发送失败

宿主App向uni小程序发送event事件,在uni小程序中调用uni.onHostEventReceive监听。

示例如下:

mp.sendUniMPEvent('uni小程序的appid', 'event事件名称', '要传递的数据', (ret) => {
  //发送消息成功回调
  console.log('Send event to MP: '+JSON.stringify(ret));
});
参数说明
参数 类型 说明
appid String 目标小程序appid
event String 事件名称
data String 或 Object 传递的数据

setDefaultMenuItems(options,callback)

设置胶囊按钮菜单 ActionSheet 项

示例如下:

mp.setDefaultMenuItems({
    items: [{
        title: "关于",
        id: "about"
    }, {
        title: "分享",
        id: "share"
    }]
}, ret => {
    if (ret.id == "about") {
        console.log("点击了 关于")
    }
})
参数说明
属性 类型 默认值 必填 说明
options object uni小程序的appid
callback Function 获取版本信息回调函数
options 参数说明
属性 类型 说明
items Array. ActionSheet 项
actionSheetItem 参数说明
属性 类型 说明
title String ActionSheet 按钮的标题
id String 点击 ActionSheet 按钮返回的标识
callback回调参数说明

JSON Object类型

属性 类型 说明
appid String 目标小程序的appid
id String 成功时存在,返回被点击 ActionSheet 按钮对应的标识

uni小程序使用的API

获取启动参数

宿主App启动uni小程序传入的extraData参数可在小程序项目App.vue的应用生命周期onLaunchonShow中获取,

示例如下:

//首次启动
onLaunch: function(info) {
    console.log('App Launch:',info);
}
//从后台切换到前台
onShow: function(info) {
    console.log('App Launch:',info);
}
info参数说明

JSON Object类型

属性 类型 说明
path String 打开的页面路径
query Object 页面参数
scene Number 启动小程序的场景值
referrerInfo Object 启动小程序时传递的数据,参考ReferrerInfo
ReferrerInfo参数说明
属性 类型 说明
appId String 打开uni小程序时的来源应用appid
extraData Object 启动时传递的数据

uni.sendHostEvent(event,data,ret,callback)

uni小程序向宿主App发送event事件,在宿主App中可调用onUniMPEventReceive监听接收event事件。

示例如下:

uni.sendHostEvent(event, data, (ret) => {
  //发送消息成功回调
  console.log('Send event to Host: '+JSON.stringify(ret));
});

参数说明

参数 类型 说明
event String 事件名称
data String 或 Object 传递的数据
callback Function(ret) 操作回调函数

callback回调参数说明

属性 类型 说明
type String "success" 表示成功, "fail" 表示失败
code Number 成功返回 0,失败返回相应 code 码

uni.onHostEventReceive(callback)

uni小程序监听宿主App发送的event事件,建议在uni小程序应用生命周期onLaunch中监听。在uni宿主App中调用sendUniMPEvent发送event事件后触发。

示例如下:

export default {
  onLaunch: function() {
    console.log('App Launch');

    //监听宿主App通讯数据
    uni.onHostEventReceive((event,data)=>{
            console.log('Receive event('+event+') from HOST: '+JSON.stringify(data));
    });
  },
  //...
}

callback回调参数说明

参数 类型 说明
event String 事件名称,宿主调用sendUniMPEvent传入的event参数
data String 或 Object 传递的数据,宿主调用sendUniMPEvent传入的data参数

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问