套马杆的套子
套马杆的套子
  • 发布:2023-10-12 10:28
  • 更新:2024-03-27 17:55
  • 阅读:1332

uniapp 开发的app作为宿主app集成uniapp开发的uni小程序

分类:uni-app

一直有需求,想做uniapp开发的宿主app的小程序,但是,官网上没有找到相关的文档,但官方确实也有提供该功能,功能不是十分完善,但是也几乎足够用了。当时找相关文档很辛苦,以下是官方大哥提供给的各api的相关文档介绍,为了大家不至于很难找,现整理下贴出来。

用法其实十分简单,在Hbuilder x中,目前已经集成了相关api,直接调用即可(配置后需提交云端打包后才能⽣效,真机运⾏时推荐使⽤⾃定义调试基座)。

关于宿主app使用的api

宿主App是通过uniMP模块管理uni⼩程序,云端打包时需要在宿主App项⽬的manifest.json中配置使⽤uni⼩

程序模块。 在"app-plus"->"modules"节点下添加"UniMP"模块,示例如下:

 "app-plus" : {  
     "modules" : {  
         "UniMP": {  
             "description": "uni⼩程序"  
         }  
     },  
 //...  
 }

加载uniMP模块

在调⽤uni⼩程序API时需先调⽤uni.requireNativePlugin⽅法加载uni⼩程序管理模块。如果返回的mp为undefined,说明当前环境不⽀持uni⼩程序

示例如下:

const mp = uni.requireNativePlugin('uniMP');  
//通过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参数说明

JSON Object类型

属性 类型 默认值 必填 说明
appid String uni⼩程序的appid
wgtFile String wgt资源⽂件路径
password String wgt解压密码

callback回调参数说明

JSON Object类型

属性 类型 说明
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参数说明

JSON Object类型

属性 类型 默认值 必填 说明
appid String uni⼩程序的appid
icon String 启动⼩程序 splash ⻚⾯显示的图⽚,默认显示 app logo
path String HBuilderX3.3.1 版本新增 <br />打开的⻚⾯路径,如果为空则打开⾸⻚。path 中 ?后⾯的部分会成为 query,注意:传⼊此参数后应⽤会重启
extraData Object HBuilderX3.3.1 版本新增 <br />需要传递给⽬标⼩程序的数据。⼩程序接收参考uni⼩程序中获取启动参数
fromAppid String HBuilderX3.3.1 版本新增<br /> 打开uni⼩程序的来源appid
scene Number HBuilderX3.3.1 版本新增<br />启动⼩程序的场景值,由宿主⾃定义
openMode String present HBuilderX3.5.1 版本新增<br />启动⼩程序的动画⽅式<br />present : 从当前⻚⾯下⾯打<br />push : 从当前⻚⾯右侧打开⼩程序 (仅ios⽀持)
enableGestureClose Boolean true HBuilderX3.5.1 版本新增<br />是否开启打开⼩程序时的动画 默认开启 (仅ios⽀持)
enableHideAnimated Boolean true HBuilderX3.5.1 版本新增<br />是否开启关闭⼩程序时的动画 默认开启 (仅ios⽀持)
enableBackground Boolean true HBuilderX3.5.1 版本新增<br />是否开启⼩程序后台运⾏的能⼒ 默认开启 如果设置为 false 退出⼩程序后⼩程序⽴即会被释放,下次打开后会重新加载

callback回调参数说明

JSON Object类型

属性 类型 说明
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回调参数说明

JSON Object类型

属性 类型 说明
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回调参数说明

JSON Object类型

属性 类型 说明
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回调参数说明

JSON Object类型

属性 类型 说明
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回调参数说明

JSON Object类型

属性 类型 说明
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.<actionSheetItem> ActionSheet 项

actionSheetItem 参数说明

属性 类型 说明
title String ActionSheet 按钮的标题
id String 点击 ActionSheet 按钮返回的标识

callback回调参数说明

**

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

uni⼩程序使⽤的API

获取启动参数

宿主App启动uni⼩程序传⼊的extraData参数可在⼩程序项⽬App.vue的应⽤⽣命周期onLaunch、onShow中

获取,

示例如下:

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

info参数说明

属性 类型 说明
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) 操作回调函数,ret参数为SendHostEventRet类型

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参数

如何打包小程序

选中需要打包的项目

发行-原生APP制作应用wgt包,确定即可。

将wgt包防止到宿主项目中,mp.installUniMP中,wgtFile直接引用(以下是放到static文件夹下的applet文件夹示例)

mp.installUniMP({  
        appid: this.TRAIN_APPLET_APPID,  
        wgtFile: '/static/applet/ceshi.wgt',  
    },
7 关注 分享
BoredApe vo 8***@qq.com 喜欢技术的前端 爱豆豆 小白请指教 2***@qq.com

要回复文章请先登录注册

1***@qq.com

1***@qq.com

为啥我也是这么操作的 提示我 wgt包里的appid不合法 我id都是一样的
2024-03-27 17:55
套马杆的套子

套马杆的套子 (作者)

回复 2***@qq.com :
离线参考
https://nativesupport.dcloud.net.cn/
2024-02-21 08:07
2***@qq.com

2***@qq.com

请问支持远程下载wgt吗?
2024-02-20 19:12
2***@qq.com

2***@qq.com

请问支持uni离线打包的app吗?
2024-02-20 18:24
zzzzz33

zzzzz33

回复 套马杆的套子 :
是要在App.vue中的onLaunch中监听才有效吗
2024-01-19 11:43
套马杆的套子

套马杆的套子 (作者)

回复 zzzzz33 :
onHostEventReceive是在⼩程序应⽤⽣命周期onLaunch中监听的么?
小程序在运行状态呢吧
2024-01-18 14:39
zzzzz33

zzzzz33

为什么我使用mp.sendUniMPEvent发送消息小程序那边接收不到
2024-01-18 14:22
4***@qq.com

4***@qq.com

... 好嘛,原来真的有啊,我还自己去实现了 - -
2023-12-12 21:31
9***@qq.com

9***@qq.com

行了 但是触发openUniMp后 返回了{"type":"success","code":0} 之后并没有打开uni小程序 而是立刻提示 WebSocket 已关闭
2023-12-12 19:09
9***@qq.com

9***@qq.com

回复 套马杆的套子 :
自定义基座了 本地跑提示undefined 直接打包成apk安装到手机后 提示安装失败 apps/_UNI_A5F2FBA/www/static/wgt/_UNI_A5F2FBA no such file or directory code:-5
2023-12-12 17:47