全部产品
Search
文档中心

SuperApp:基于uni-app开发的Native App如何接入uni-app小程序容器

更新时间:Nov 21, 2024

适用场景

基于uni-app开发的Native App,接入uni-app小程序容器。其他场景请参见Native App接入小程序容器章节接入,章节入口Android接入

解决方案

  1. 下载Uniapp Native插件EMASUniAppPlugin

  2. 解压EMASUniAppPlugin.zip,并将解压后的文件夹拷贝到uni-app工程下的nativeplugins目录。

  3. 使用HBuilderX打开uni-app工程,单击uni-app工程的manifest.json文件,选择App原生插件配置,再选择本地插件,勾选nativeplugins目录下的EMASUniAppPlugin截屏2022-12-30 下午4截屏2022-12-30 下午4

  4. 单击manifest.json,切换到源码视图,在app-plusmodule下添加UniMP参数。截屏2022-12-30 下午4

  5. 在uni-app工程中使用EMASUniAppPlugin和Uniapp小程序容器。

    //获取uniapp小程序容器
    const mp = uni.requireNativePlugin('uniMP');
    //获取EMASUniAppPlugin插件
    var emasModule = uni.requireNativePlugin("EMASUniAppPlugin");

EMASUniAppPlugin插件API

configEmas

var ret = emasModule.configEmas({
					'appKeyAndroid': 'xxx',
					'appSecretAndroid': 'xxx',
					'channelIdAndroid': 'xxx',
					'mtopDomain': 'xxx',
					'useHttp': 'false',
					'appKeyIOS': 'xxx',
					'appSecretIOS': 'xxx',
					'channelIdIOS': 'xxx'
				})

初始化EMASUniAppPlugin插件,该方法是同步方法。

Parameters

appKeyAndroid

String:Android应用的appKey,从EMAS控制台获取。

appSecretAndroid

String:Android应用的EMAS的appSecret,从EMAS控制台获取。

channelIdAndroid

String: Android应用的channelId,从EMAS控制台获取。

mtopDomain

String:EMAS的mtop域名。

useHttp

boolean:是否使用http协议。

appKeyIOS

String:iOS应用的EMAS的appKey,从EMAS控制台获取。

appSecretIOS

String:iOS应用的EMAS的appSecret,从EMAS控制台获取。

channelIdIOS

String: iOS应用的channelId,从EMAS控制台获取。

updateMiniApp

emasModule.updateMiniapp({
					'appId': 'xxx',
				}, (ret) => {
					
				})

更新小程序版本。如果小程序有新版本,调用该方法后会下载安装新版本小程序。该方法是异步方法。

Parameters

appId

String:小程序的id,从应用开放平台获取,详细操作请参见获取Miniapp ID

miniAppVersion

String:小程序版本号,可以为空。如果传入的是null或空值,该方法会下载安装小程序。如果传入了具体的版本号,会根据传入的版本号检查小程序是否有更新,如果无更新不进行任何操作,如果有更新会下载安装小程序。

publishId

String:小程序的发布号,可以为空。

Returns

code

number:错误码。

errorMsg

String:错误信息。

wgtPath

String:小程序安装包路径。

uniAppId

String: 小程序的id。

version

String: 小程序的版本号。

publishType

String: 小程序发布类型。

示例:

emasModule.updateMiniapp({
					'appId': '151624424672398147591',
				}, (ret) => {
					if (ret.code === 0) {
            //通过小程序容器安装小程序
						mp.installUniMP({
							appid: '__UNI__151624424672398147591',
							wgtFile: ret.wgtPath
						}, (r) => {
							if (0 == r.code) {
								uni.showToast({
									title: '安装成功'
								});
								//安装成功后,打开小程序
								mp.openUniMP({
									appid: '__UNI__151624424672398147591'
								}, (ret) => {
									if (0 != ret.code) {
										uni.showModal({
											title: '启动失败',
											content: JSON.stringify(ret),
											showCancel: false
										});
									}
									console.log('openUniMP: ' + JSON.stringify(ret));
								});
							} else {
								uni.showModal({
									title: '安装失败',
									content: JSON.stringify(r),
									showCancel: false
								});
							}
							console.log('installUniMP: ' + JSON.stringify(r));
						});
					}
				})

getMiniappList

emasModule.getMiniappList({
					'appIdList': '[xxx]',
				}, (ret) => {
					
				})

获取小程序列表。该方法是异步方法。

Parameters

appIdList

String:小程序id列表,从应用开放平台获取,详细操作请参见获取Miniapp ID

Returns

code

number:错误码。

errorMsg

String:错误信息。

listData

String:小程序列表。

获取Miniapp ID

  1. 登录应用开放平台。

  2. 选择所属空间并进入,系统进入Overview页面。

    说明

    如果您仅有一个空间的权限,登录后无需选择空间,可直接进入Overview页面。

  3. 在左侧导航栏中,选择Miniapps,系统进入Miniapp List页面。

  4. Miniapp List页面,查看并记录ID。

    image