移动开发:H5+实现APP自动下载更新(HBuilder)
2017-09-14 09:39
330 查看
这里的自动更新并非是热更新,而只是单纯检测服务器上是否有新的版本,如果有则下载安装。
思路:在服务器中配置一个版本文件:xxx.json
{
update:’yes’,//是否自动更新
version:’1.0.8’,//最新的版本号
url:’http://www.xxx.com/xxxxxx.apk‘//最新安装包的URL路径
}
在每次打开H5APP的时候,去请求这个JSON,比对本地的manifest.json中的版本信息是否和服务器上的版本一致,如果有更新的版本,则下载最新的安装包,下载到本地后,安装该软件覆盖原有软件。
代码:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
之后每次需要更新版本就不用让用户去扫描二维码之类的,每次登陆进去自动判断是否有新版本,如果确认下载,则下载安装最新版本。
思路:在服务器中配置一个版本文件:xxx.json
{
update:’yes’,//是否自动更新
version:’1.0.8’,//最新的版本号
url:’http://www.xxx.com/xxxxxx.apk‘//最新安装包的URL路径
}
在每次打开H5APP的时候,去请求这个JSON,比对本地的manifest.json中的版本信息是否和服务器上的版本一致,如果有更新的版本,则下载最新的安装包,下载到本地后,安装该软件覆盖原有软件。
代码:
ks.jsonp('http://www.xxxxx.cn/ksd/update_ksd.json','update_ksd');//此为跨域函数,因为APP中的文件都在本地,请求服务器的话需要通过跨域才能拿到数据。 //服务器上的json文件 //因为是跨域的所以返回的是函数而不是JSON数据,参数是JSON格式 update_ksd({ state:'yes', version:'1.0.8', url:'http://www.ccccccc.com/xxxx.apk' }) function update_ksd(data)//跨域请求后的回调函数 { var new_json=data; if(new_json.state=='yes')//如果是自动更新,则判断版本号 { $.ajax({ type: "get", url: "manifest.json", async: true, success: function(res) { var data = JSON.parse(res); var version=data.version.name; var new_version=new_json.version.replace(/\./g,''); version=version.replace(/\./g,''); if(new_version>version)//比对版本号 { //console.log(new_version+'新版本'+version); plus.nativeUI.confirm("应用有新版本,是否立即下载更新?", function(event) { if(event.index == 1) { plus.nativeUI.showWaiting(); ks.update_ksd(new_json.url);//更新函数,在下面 } }, 'xxx', ['取消', '确认']); } } }); } } //ks.update_ksd========== update_ksd:function(url){ //console.log(url); //创建下载管理对象 var dtask = plus.downloader.createDownload(url,{}, function ( d, status ) { // 下载完成 if ( status == 200 ) { //下载成功后的回调函数 plus.nativeUI.toast( "下载成功,准备安装" + d.filename ); //安装程序,第一个参数是路径,默认的下载路径在_downloads里面 plus.runtime.install('_downloads/ksd.apk',{},function(){ plus.nativeUI.toast('安装成功');},function(){plus.nativeUI.toast('安装失败');}); plus.nativeUI.closeWaiting(); } else { alert( "下载失败 " + status ); } }); //dtask.addEventListener( "statechanged", onStateChanged, false ); dtask.start(); //开始下载任务 }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
之后每次需要更新版本就不用让用户去扫描二维码之类的,每次登陆进去自动判断是否有新版本,如果确认下载,则下载安装最新版本。
相关文章推荐
- h5+实现APP自动下载更新(hbuilder)
- [Phonegap+Sencha Touch] 移动开发67 安卓实现 新版提示更新并下载安装(自动更新插件)
- [Phonegap+Sencha Touch] 移动开发77 Cordova Hot Code Push插件实现自动更新App的Web内容
- android开发游记:APP自动更新功能的快速集成和实现方法讲解
- 安卓开发实战之app之版本更新(DownloadManager和http下载)完整实现
- Android 通过蒲公英pgyer的接口 Service 实现带进度下载App 通知栏显示 在线更新 自动更新Demo
- Android 通过蒲公英pgyer的接口 Service 实现带进度下载App 通知栏显示 在线更新 自动更新Demo
- 安卓开发实战之app之版本更新升级(DownloadManager和http下载)完整实现
- iOS 开发笔记 - 开发中如何实现自动检测更新APP
- wex5开发-文件下载(可实现app内下载更新apk)
- Android开发实践经验谈:如何让各式手机浏览器可以直接下载apk安装文件且实现自动安装APP
- H5app自动更新思路与实现
- iOS 开发笔记 - 开发中如何实现自动检测更新APP
- 求助!!用vue做了一款app,怎么实现打开app自动检测下载更新的功能呢
- IOS开发中如何实现自动检测更新APP
- android开发进行自动更新时怎么下载软件到手机内存,显示实现下载到SD卡了
- 安卓开发中,如何在代码中实现第三方推送更新,下载好更新后,自动卸载旧版本再安装,而不是直接覆盖安装
- 关于ionic 开发自动更新app的实现
- [Phonegap+Sencha Touch] 移动开发77 Cordova Hot Code Push插件实现自己主动更新App的Web内容
- iOS开发app自动更新的实现