文档章节

手机APP关于资源热更新的问题

BigGod
 BigGod
发布于 2016/03/30 17:00
字数 632
阅读 69
收藏 1

实现这样的功能只需3步。

第一,获取当前app的版本信息。

第二,需要一个接口,获取服务器上app版本的基本信息,(最低版本,最高版本,资源包的大小,资源包的url,【这里区分android 和 ios】,更新的内容),当然可以根据需求,让接口返回有用的信息。

第三,判断是不是需要强制更新, 如果是强制更新的话把接口返回的资源包url 通过插件来下载。 


插件定义了一个全局对象 hotpatch object,整个方法当前版本只暴露出一个方法updateNewVersion,调用该方法传入一个 www.zip的下载地址,之后插件会自动下载,并解压。
hotpatch.updateNewVersion("http://10.211.131.232:8080/www.zip"); //如果是android机用安卓的url,如果是ios用ios的url。
注意:
由于android平台由于特殊性 ,需要打开主工程的mainActivity 文件,在 {super.onCreate(savedInstanceState);后面加上一行代码 init();

示例:
调用接口获取服务器的版本信息

$scope.versionNumber = urls.getVersion().versionNumber;//获取当前的版本信息
var method = "GET";
var url = "http://agelocmedev.cn.nuskin.com/agelocme/api/v1/appVersion/getAppVersion";
urls.chackUpdate(method, url)  //调用接口获取服务器上app版本的基本信息
    .success(function (data, status) {
        //检查版本更新  弹出一个窗口提示更新   判断是强制更新还是非强制更新?
        var param = {  
            message1: "发现新版本",
            message2: data.result.lastVersion, 
            message3: data.result.fileSize,
            message4: data.result.updateDesp,
        }//页面上展示的一些信息,根据需求需要。
        $rootScope.androidUrl = data.result.androidUrl;
        $rootScope.iosUrl = data.result.iosUrl;
        if ($scope.versionNumber < data.result.lowestVersion) {
            var force = true;//强制更新
        } else if (data.result.lowestVersion <= $scope.versionNumber < data.result.lastVersion{
            var force = false;//非强制更新
        }
        httpRes.checkUpdateMessage(param, force);//dialog 弹出一个弹框
    }).error(function (data, status) {

    });

点击立即更新时候的操作

scope.update = function () {
      if (device.platform === 'android' || device.platform === 'Android') {
        console.log($rootScope.androidUrl);
        hotpatch.updateNewVersion($rootScope.androidUrl);//调用插件 下载资源包
      }else{
        console.log($rootScope.iosUrl);
        hotpatch.updateNewVersion($rootScope.iosUrl);//调用插件 下载资源包
      }
}

安装包下载好之后自动安装重新加载页面


效果图:

 













 







© 著作权归作者所有

BigGod
粉丝 1
博文 13
码字总数 4842
作品 0
程序员
私信 提问
Android热更新:微信Tinker框架的接入与测试

Android热修复框架的对比(最终选择微信Tinker) Android热修复框架的对比 总结对比摘自Tinker官方Wiki AndFix作为native解决方案,首先面临的是稳定性与兼容性问题,更重要的是它无法实现类...

涤生_Woo
2017/04/21
0
0
实现iOS图片等资源文件的热更新化(零): 序

必要的序 以后在写系列文章,准备把基本的规划和动机等,单独作为一个小的序言部分给独立出来.序言部分,可以较为完整地交待系列文章的写作动机,所展示的编码技术可能的应用场景等.个人,我还是比...

ios122
2016/09/13
21
0
爱奇艺开源 Qigsaw,基于 Android App Bundle 的动态化框架

近日爱奇艺宣布开源基于Android App Bundle的动态化框架 Qigsaw。以下是其官方在演讲中对项目的介绍。 我们于2019年6月26号正式开源Qigsaw。 Qigsaw是爱奇艺自主研发的动态化框架,其核心优势...

oschina
07/04
6.3K
7
卢松松:个人APP(移动客户端)制作指南

个人预测,2013年个人APP会出现井喷,随着一些明星的个人APP推出,在加上各类在线APP制作的网站诞生,使得APP制作更简单快捷。而且近期一些知名个人网站也推出了独立APP也加速了个人APP的进程...

卢松松
2013/06/03
4K
23
Android插件化:从入门到放弃

引言 先简单介绍一下Android插件化。很早之前已经有公司在研究这项技术,淘宝做得比较早,但淘宝的这项技术一直是保密的。直到2015年才陆续出现很多框架,Android插件化分成很多技术流派,实...

席道坤
2016/12/12
96
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
7
0
Flutter系列之在 macOS 上安装和配置 Flutter 开发环境

本文为Flutter开发环境在macOS下安装全过程: 一、系统配置要求 想要安装并运行 Flutter,你的开发环境需要最低满足以下要求: 操作系统:macOS(64位) 磁盘空间:700 MB(不包含 IDE 或其余...

過愙
昨天
6
0
OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
昨天
2.5K
16
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
昨天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部