有时候需要给用户一个自主的权利,自主检测app是否是最新版本。

如何实现?

1.点击调用接口,检测是否有更新。

默认APICloud会自动检测版本更新,用户也可以在config.xml里配置autoUpdate为false,然后使用mam模块来检测更新,mam模块还提供自定义事件功能

示例代码:

var mam = api.require('mam');
mam.checkUpdate(function( ret, err ){
if (ret) {
alert( JSON.stringify( ret ) );
} else{
alert( JSON.stringify( err ) );
}
});

返回数据:

{
status:true, //操作成功状态值
result:
{
update:true, //是否有更新
closed:true, //设备上当前版本是否被强行关闭
version:'1.0', //新版本版本号
versionDes:'', //新版本更新描述
closeTip:'', //提示用户应用版本被强行关闭时弹框的提示语
updateTip:'', //提示用户有更新时弹框的提示语
source:'', //新版本安装包的下载地址
time:'' //新版本的发布时间
}
}

2.弹出comfirm框,让用户选择是否升级

layer.confirm('有新版本啦!<br/>最新版本:'+ret.result.version+'<br/>更新描述:<br/>'+updateTip+'<br/>发布时间:'+ret.result.time,
{
title:'更新提示',
btn: ['立即更新','取消'] //按钮
}, function(){
}, function(){
});

3.执行下载操作,api中有download方法

api.download({
url: url,
savePath: 'fs://test.rar',
report: true,
cache: true,
allowResume: true
}, function(ret, err) {
if (ret.state == 1) {
//下载成功
} else { }
});

4.执行安装installApp方法

//Android用法:
api.installApp({
appUri: 'file://xxx.apk'
}); //iOS用法:
api.installApp({
appUri: 'https://list.kuaiapp.cn/list/KuaiAppZv7.1.plist' //安装包对应plist地址
});

整合如下:

// 检查更新
function checkUpdate() {
var mam = api.require('mam');
mam.checkUpdate(function( ret, err ){
if (ret) {
if (!ret.status) {
toast('服务器繁忙,请稍后再试');
return;
}
if (ret.result.update) {
var updateTip;
updateTip = ret.result.updateTip.replace(/\r\n/g,"<BR>");
updateTip =updateTip.replace(/\n/g,"<BR>");
layer.confirm('有新版本啦!<br/>最新版本:'+ret.result.version+'<br/>更新描述:<br/>'+updateTip+'<br/>发布时间:'+ret.result.time,
{
title:'更新提示',
btn: ['立即更新','取消'] //按钮
}, function(){
if (api.systemType == "android") {
api.download({
url : ret.result.source,
report : true
}, function(retdownload, err) {
if (retdownload && 0 == retdownload.state) {/* 下载进度 */
api.toast({
msg : "正在下载应用" + retdownload.percent + "%",
duration : 2000
});
}
if (retdownload && 1 == retdownload.state) {/* 下载完成 */
var savePath = retdownload.savePath;
api.installApp({
appUri : savePath
});
}
});
}
if (api.systemType == "ios") {
api.installApp({
appUri : ret.result.source
});
}
}, function(){
});
return;
} else {
toast('当前已是最新版本');
return;
}
} else{
toast('服务器繁忙,请稍后再试');
return;
}
});
}

apiCloud手动检测更新的更多相关文章

  1. IOS开发中如何实现自动检测更新APP

    自动检测更新实现逻辑: 先上github地址:https://github.com/wolfhous/HSUpdateApp 1,获取当前项目APP版本号 2,拿到AppStore项目版本号 3,对比 ...

  2. iOS 开发笔记 - 开发中如何实现自动检测更新APP

    1.获取当前项目APP版本号 2.拿到AppStore项目版本号 3.对比版本号,实现更新功能 直接上代码: #import "ViewController.h" //1一定要先配 ...

  3. 关于window10更新之后,15.5版本虚拟机不能使用的情况:检测更新版本

    1.用了四五年的虚拟机,最近居然老提示检测更新版本,嗯,我将我的虚拟机由10版本,更新到了15.5版本,这也是网友说的,然而并灭有什么乱弄.window10系统自动更新,自动更新以后虚拟机就打不开了, ...

  4. Nexus5如何手动OTA更新系统到4.4.3、4.4.4及常见问题回答

    这里将记录一套行之有效的Nexus5手动升级方法,以帮助看见这篇文章的朋友成功将手头的Nexus5升级到4.4.4. 因为谷歌服务器的事,我的这次OTA更新起来走了很多弯路.我试过挂VPN等待系统来更 ...

  5. iOS 检测更新版本

    获取app版本URL 数字是appID,在开发者账号app信息中可以找到 #define APP_URL @"http://itunes.apple.com/cn/lookup?id=116 ...

  6. apicloud 上传/更新App版本到 ios store 流程步骤

    app更新 上传APP的地址: https://itunesconnect.apple.com/login 苹果开发者中心: https://developer.apple.com/ app正式包更新 ...

  7. IOS 通过苹果开放API检测更新

    #define APPID @"1067207206" -(void)onCheckVersion { NSDictionary *infoDic = [[NSBundle mai ...

  8. sublime text3入门笔记以及屏蔽sublime自动升级检测更新

    两个月前学习python的时候,有人推荐这个程序员最好用的编辑器,我下载了之后,发现比notepad++要好用很多,目前来说,网上成熟的版本是sublime text2简体中文版,插件也是很兼容,我用 ...

  9. 关闭sublime自动检测更新提示

    在使用sublime text 3的时候,有自动更新的话再打开的时候总是提醒更新,这让我这个强迫症重度患者非常难受,要取消自动检查更新,点击菜单栏"Preferences"=> ...

随机推荐

  1. luogu P2117 小Z的矩阵(结论题)

    题意 题解 这题有点水. 我们发现对答案有贡献的实际上只有左上到右下的对角线上的数. 因为不在这条对角线上的乘积都要计算两遍,然后%2就都没了... 然后就做完了. #include<iostr ...

  2. harbor 安装过程

    [root@master01 harbor]# ./prepare  Clearing the configuration file: ./common/config/adminserver/env ...

  3. Django学习之配置篇

    MTV Model Template View 数据库 模版文件 业务处理 了解Django框架,功能齐全 一.安装Django&Django基本配置 安装Django pip3 django ...

  4. System.IO.IsolatedStorage 使用 IsolatedStorageFileStream 存储信息

    在C#中还有一种叫做IsolatedStorage的存储机制,他存储信息的方式类似于我们的cookie, IsolatedStorage存储独立于每一个application,换句话说我们加载多个应用 ...

  5. python中的try...except...finally函数

    异常Error 我们在写代码的时候,经常会遇见程序抛出Error无法执行的情况 一般情况下,在Python无法正常处理程序时就会发生一个异常.异常是Python对象,表示一个错误.当Python脚本发 ...

  6. HDU 3046 Pleasant sheep and big big wolf

    Pleasant sheep and big big wolf Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged ...

  7. POJ——T2446 Chessboard

    http://poj.org/problem?id=2446 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 18560   ...

  8. HDOJ 5087 Revenge of LIS II DP

    DP的时候记录下能否够从两个位置转移过来. ... Revenge of LIS II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: ...

  9. MYSQL源代码编译的变动

    Mysql的安装,对于mysql不同版本号的mysql源代码编译方式不一样 5.6.2的版本号開始编译方式已经由 configure 变成了cmake方式 ,相关的新的 编译方式在mysql官网已经提 ...

  10. thinkphp5项目--个人博客(六)

    thinkphp5项目--个人博客(六) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...