PS1:本教程主要针对使用APICloud技术进行App应用开发的技术人员
PS2:考虑到代码的兼容性,本教程代码使用ES5方式编写,最新的大部分手机的浏览器内核已支持ES6代码,不考虑兼容性的话,也可以尝试使用ES6+的代码风格去编写
1 使用场景
App的版本代码管理由2种方式,一种为自动、一种为手动
- 自动方式:将版本管理交由APICloud引擎进行自动处理,自动实现App的自动版本检测、提示及自动更新等功能
- 优点:简单、快捷,无需开发人员编写任何代码;
- 缺点:代码业务逻辑已固定,不支持扩展,无法修改相关样式及执行逻辑;
- 手动方式:由开发人员自定编写代码,去实现App版本的检查、提示、更新等逻辑
- 优点:支持自定义开发,逻辑灵活,开发人员可定制弹窗样式和交互逻辑;
- 缺点:所有逻辑的代码均需要开发人员自定编写完成,有一定的工作量;
本教程主要介绍开发者如何在手动方式下,完成App版本管理的相关功能开发
2 开发流程
2.1 配置激活版本管理的自动方式
修改根目录下的config.xml文件,将其中的<preference name="autoUpdate" value="false" />
中的vallue
参数值由false
修改为true
,即
<preference name="autoUpdate" value="true" />
2.2 相关代码
/**
* 检查版本升级
*/
function checkUpdate() {
var mam = api.require('mam');
// 最新版本检测
mam.checkUpdate(function (ret, err) {
var result = ret.result;
if (result && result.update) {
// 拼接弹窗的提示信息
var titleMsg = '发现新版本[' + result.version + ']';
var content = result.updateTip;
var cancelBtn = '暂不升级';
if (result.closed) {
cancelBtn = '放弃退出';
}
if (ret.versionDes) {
content += '\n' + ret.versionDes;
}
// 弹出弹窗对话框
api.confirm(
{
title: titleMsg,
msg: content,
buttons: ['立即升级', cancelBtn]
},
function (ret, err) {
if (ret.buttonIndex == 1) {
updateApp(result.source);
} else if (result.closed) {
// 强制关闭的应用,取消直接退出
api.closeWidget({ silent: true });
}
}
);
return;
}
// 强制关闭版本的弹窗提示
if (result && result.closed) {
// 无更新,版本强制关闭
api.alert(
{
title: '版本关闭提示',
msg: '很抱歉,当前版本已关闭,程序将自动退出'
},
function (ret, err) {
api.closeWidget({ silent: true });
}
);
}
});
}
代码说明:本代码仅做示范示例,开发者可根据自己的业务逻辑需求,自定进行相关代码的修改优化(例如自定义一个更漂亮的提示弹窗)
代码内涉及的API命令的前置介绍:
-
api.require
: APICloud引擎内置api,用于加载原生的APICloud模块 -
api.confirm
:APICloud引擎内置api,弹出具有2个交互按钮的模态对话框 -
api.alert: APICloud引擎内置api,弹出具有1个按钮的模态对话框,功能类似原生web下的window.alert
-
-
api.closeWidget: APICloud引擎内置api,关闭app
-
3 云端发布版本的操作说明:
3.1 登录APICloud云端控制台,编制新版本
2. 获取新版本的下载地址
-
Android版本的下载地址获取
3. 填写配置预发布更新版本的更新信息
4. 推送强制版本更新的操作说明
在发布新版本的同时,将之前的历史版本关闭,即可强制使用该历史版本的用户更急到最新版本,否则app将无法继续使用