版本更新
概述
您可以使用APICloud 的版本更新服务,来向用户推送您App的新版本。版本更新服务只针对正式版APP,测试版无效。只能由低版本更新到高版本。
注意:使用版本更新功能需要添加mam模块。
参考视频
一、使用自动更新
1, config.xml 中配置
<preference name="autoUpdate" value="true" />
2,登录APICloud官网,进入控制台,找到应用服务下的“版本”(图一),点击进入版本管理界面(图二),如图:
图一:
图二:
3,点击“更新APP版本”,选择版本并填写更新地址,更新备注,最后点击“更新”按钮。
更新地址在云编译页面,点开编译记录,点击查看地址图标获取,如下图:
4,打开手机上的APP,即可接收到新版本的推送。
二、使用API更新
也可使用mam模块更新,参考文档: //docs.apicloud.com/%E7%AB%AFAPI/%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%AF%B9%E6%8E%A5/mam
首先在项目代码config.xml中配置:
<preference name="autoUpdate" value="false" />
示例代码:
function checkUpdate() {
var mam = api.require('mam');
mam.checkUpdate(function(ret, err) {
if (ret) {
var result = ret.result;
if (result.update == true && result.closed == false) {
var str = '新版本型号:' + result.version + ';更新提示语:' + result.updateTip + ';下载地址:' + result.source + ';发布时间:' + result.time;
api.confirm({
title : '有新的版本,是否下载并安装 ',
msg : str,
buttons : ['确定', '取消']
}, function(ret, err) {
if (ret.buttonIndex == 1) {
if (api.systemType == "android") {
api.download({
url : result.source,
report : true
}, function(ret, err) {
if (ret && 0 == ret.state) {/* 下载进度 */
api.toast({
msg : "正在下载应用" + ret.percent + "%",
duration : 2000
});
}
if (ret && 1 == ret.state) {/* 下载完成 */
var savePath = ret.savePath;
api.installApp({
appUri : savePath
});
}
});
}
if (api.systemType == "ios") {
api.installApp({
appUri : result.source
});
}
}
});
} else {
api.alert({
msg : "暂无更新"
});
}
} else {
api.alert({
msg : err.msg
});
}
});
}
三、强制更新:
- 进入控制台的“版本”管理界面
- 点击右上角的“更新APP版本”,发布新的app版本:选择要发布的版本,以1.0.0为例,输入一些版本描述,或者留空;app下载链接可以从“编译记录中复制”,也可以是存在自己服务器上的安装包地址
- 发布成功后,并且做推广一段时间后,你的用户手机上都装了1.0.0版本了
- 重复1、2操作,发布一个新的版本,比如2.0.0
- 此时,安装了1.0.0的用户,在启动app时,就会收到2.0.0版本的提示更新,ta可以选择不更新
- 关闭版本:在版本记录界面中,在1.0.0版本记录的最右侧,选择“关闭”,即将1.0.0版本关闭
- 此时,安装了1.0.0的用户,在启动app时,就会收到2.0.0版本的强制更新,必须更新才能继续使用
- 其他版本的强制更新以此类推。
四、强制关闭:
同强制更新逻辑一致,唯一不同的点:当你将版本管理中的所有版本均关闭后,用户在启动app时,就会收到强制关闭的提示了,即该app不再使用
强制更新和强制关闭的主要逻辑:当用户手机上当前安装的版本被关闭时,如果此时服务器上有比该版本更新的版本,则强制用户更新到最新版本;如果用户手机上当前安装的版本没有被关闭时,则提示更新,用户可以选择不更新;当服务器上所有版本都被关闭时,该应用被强制关闭,用户无法再使用。注:前置条件是手机联网了。