# 小程序管理
小程序管理主要介绍操作小程序的API,包括:打开小程序,关闭小程序,删除小程序等
# 1. 打开小程序
不同的场景,所使用的打开小程序的api也不同。所以,我们提供了多种不同的打开小程序的api。
- 打开线上小程序,这里一般只需要小程序id和服务器地址即可,该api只能打开正式版和审核版的小程序。
- 二维码打开小程序,这个场景是扫描小程序平台上的二维码,得到二维码里的内容,然后使用该内容打开小程序。正式版、体验版、审核版、开发版、预览版本的小程序二维码都可以使用该Api打开。
# 1.1 普通打开小程序
打开小程序时,会先判断本地是否有缓存的小程序,如果没有,则会自动从远程服务器上下载小程序,然后打开;如果有缓存的小程序,则会先打开本地小程序,然后再校验服务器端是否有新版本。
如果有新版本,则下载新版小程序,下次打开时,就会使用新版小程序;如果没有新版本,则什么也不做。
/**
* 启动小程序
* @param {Object} params
* @param {string} params.appletId 小程序id,必填
* @param {string} params.apiServer 小程序所属服务器地址,必填
* @param {number} params.sequence 小程序索引, 非必填
* @param {Map<string,string>} params.startParams 小程序启动参数,仅支持path 和 query
* @param {string} params.offlineMiniprogramZipPath 离线小程序压缩包路径,可传入一个本地小程序包路径,加快首次启动速度, 非必填
* @param {string} params.offlineFrameworkZipPath 离线基础库压缩包路径,可传入一个基础库路径,加快首次启动速度, 非必填
* @param {boolean} params.animated 是否使用动画,非必填,默认值为true,仅iOS支持
* @param {TranstionStyle} params.transitionStyle 打开小程序时的转场动画方式,仅iOS支持
* @param {boolean} params.isSingleProcess 是否使用单进程模式,非必填,默认值为false。仅Android支持
* @param {FCRelaunchMode} params.reLaunchMode 执行reLaunch的场景
* @returns
*/
startApplet(params)
属性名 | 类型 | 描述 |
---|---|---|
appletId | string | 小程序id,必填 |
apiServer | string | 小程序所属服务器地址,必填 |
startParams | Map<string, string> | 小程序启动参数,仅支持path 和 query |
sequence | int | 小程序索引, 非必填 |
offlineMiniprogramZipPath | string | 离线小程序压缩包路径,可传入一个本地小程序包路径,加快首次启动速度, 非必填 |
offlineFrameworkZipPath | string | 离线基础库压缩包路径,可传入一个基础库路径,加快首次启动速度, 非必填 |
animated | boolean | 是否使用动画,非必填,默认值为true。仅iOS支持 |
isSingleProcess | boolean | 是否以单进程模式运行,默认值为false。仅Android支持 |
reLaunchMode | FCRelaunchMode | 执行reLaunch的模式。ParamsExist、OnlyParamsDiff、Always、Never |
注意:如果要首次离线启动,则offlineMiniprogramZipPath 和 offlineFrameworkZipPath必须都传递。
示例代码:
import MopSDK from 'react-native-mopsdk';
var params = {apiServer: 'https://api.finclip.com', appletId: appId};
var startParams = {
'path':'/pages/index/index',
'query':'key1=value2&key2=value2'
};
params.startParams = startParams;
MopSDK.startApplet(params);
# 1.2 二维码打开小程序
这种情况流程一般会复杂一些,需要先扫描FinClip小程序开放平台上的二维码,得到二维码里的内容,然后使用二维码内容调用该接口打开小程序。
/// 二维码信息启动小程序
/// [qrcode]
/// [isSingleProcess] 是否以单进程模式运行,仅Android支持该参数,默认为false
/**
* 启动小程序
* @param {string} qrcode 二维码内的字符串内容
* @param {boolean} isSingleProcess 是否以单进程模式运行,仅Android支持该参数,默认为false
*/
qrcodeOpenApplet(qrcode, isSingleProcess = false)
注意:打开体验版二维码时,需在初始化sdk时添加对应的体验成员userId。
示例代码:
var qrCode = '二维码内容';
MopSDK.qrcodeOpenApplet(qrCode);
# 2. 关闭小程序
关闭小程序 等价于 点击右上角胶囊里的小程序,此时小程序是退至后台,小程序并未销毁。
# 2.1 关闭指定小程序
/**
关闭指定的小程序
@param appletId 小程序id
@param animated 是否显示动画,仅iOS生效
*/
closeApplet(appletId, animated)
示例代码:
MopSDK.closeApplet(appletId, animated)
# 2.2 关闭所有小程序
有些场景下,可能存在A小程序打开B小程序,B小程序打开C小程序的情况,这时想要关闭打开的所有小程序,可以使用该方法。
/**
* 关闭打开的所有小程序
*/
closeAllApplets()
示例代码:
MopSDK.closeAllApplets()
# 3. 结束小程序
小程序被关闭后,并没有真的结束,而是在后台挂起。等下次打开小程序时,会立即将小程序切换至前台运行。 所以,如果我们希望小程序关闭后,真的被结束掉,可以根据实际情况使用以下API来结束指定小程序或所有小程序。
# 3.1 结束指定小程序
小程序关闭后,调用该api可删除缓存,即可销毁该小程序。
/**
* 结束小程序 小程序会从内存中清除
*/
finishRunningApplet(appletId, animated)
示例代码:
MopSDK.finishAllRunningApplets();
# 3.2 结束所有小程序
// 结束所有在运行的小程序
finishAllRunningApplets()
示例代码:
MopSDK.finishAllRunningApplets();
# 4. 删除小程序
由于小程序的运行,会将小程序包和小程序信息缓存在本地,以后打开时会优先使用缓存,所以打开时速度也就会很快。 所以,如果想要将小程序的所有信息都删除,那么可以使用以下api删除某个小程序或者删除所有小程序。
# 4.1 删除所有小程序
/**
* 清除所有小程序缓存
*/
MopSDK.removeAllUsedApplets()
# 5. 设置小程序切换动画(仅安卓)
/**
* @param {String} anim
* SlideFromLeftToRightAnim
* SlideFromRightToLeftAnim,
* SlideFromTopToBottomAnim,
* SlideFromBottomToTopAnim,
* FadeInAnim,
* NoneAnim
**/
MopSDK.setActivityTransitionAnim(anim) {