apiclond检测更新

有时候需要给用户一个自主的权利,自主检测app是否是最新版本。(也可以上来提示用户更新消息,在index.html中写)

实现如下:

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;
        }
    });
}

//以上是网上参考的,如下项目中用到的:

  checkUpdate: function() {
                    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 + ';<br/>更新提示语:' + result.updateTip ;
                                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
                                                    // });
//引用的ui进度条模块 var UIActionProgress = api.require('UIActionProgress'); UIActionProgress.open({ maskBg: 'rgba(0,0,0,0.5)', styles: { h: 108, bg: '#fff', title: { size: 13, color: '#000', marginT: 10 }, msg: { size: 12, color: '#000', marginT: 5 }, lable: { size: 12, color: '#696969', marginB: 5 }, progressBar: { size: 2, normal: '#000', active: '#4876FF', marginB: 35, margin: 5 } }, data: { title: '正在下载应用', value: ret.percent + "%" } }, function(ret) { }); } if (ret && 1 == ret.state) { /* 下载完成 */ var savePath = ret.savePath; api.installApp({ appUri: savePath }); } }); } } }); } else {
//api.toast("暂无更新版本")
return; } } else { api.toast('服务器繁忙,请稍后再试'); return; } }); },

参考文章:http://www.cnblogs.com/jiqing9006/p/6484618.html

 

posted @ 2018-08-06 15:26  涵三点  阅读(230)  评论(0编辑  收藏  举报