你的位置:首页 > 软件开发 > 操作系统 > 实现iOS图片等资源文件的热更新化(四): 一个最小化的补丁更新逻辑

实现iOS图片等资源文件的热更新化(四): 一个最小化的补丁更新逻辑

发布时间:2016-10-10 14:00:05
简介以前写过一个补丁更新的文章,此处会做一个更精简的最小化实现,以便于集成.为了使逻辑具有通用性,将剥离对AFNetworking和ReativeCocoa的依赖.原来的文章,可以先看这里: http://www.ios122.com/2015/12/jspatconline ...

简介

实现iOS图片等资源文件的热更新化(四): 一个最小化的补丁更新逻辑

以前写过一个补丁更新的文章,此处会做一个更精简的最小化实现,以便于集成.为了使逻辑具有通用性,将剥离对AFNetworking和ReativeCocoa的依赖.原来的文章,可以先看这里: http://www.ios122.com/2015/12/jspatconline/

这么做的意义

先交代动机和意义,或许应该成为自己博客的一个标准框架内容之一,不然以后自己需要看着,也不过是一堆干瘪的代码.基本的逻辑图,如上!此处,我就从简!

从简的原因有3:

  1. 补丁更新,状态可以设计的很复杂,就像开头那篇文章提到的那样,但是我感觉没多大必要,至少在我们的App中;
  2. 我想演示一个相对完整的逻辑,但是又不想耗费太多的时间构建场景;
  3. 从简后的方案,简单但够用了,至少目前针对我们的项目来说;

所以说:这篇文章的意义,其实是在于简化已有的热更新代码,越简单越好维护.

基本思路

  1. App启动时,判断特定的服务器接口所返回的图片url是否为最新,判断方式就是比对返回值中的md5字段与本地保存的资源的url是否一致;
  2. 如果图片资源有更新,则下载解压到指定的缓存目录,初步打算以资源文件的md5来划分文件夹,来避免冲突;
  3. 读取图片时,优先从缓存目录读取,缓存目录不存在再从ipa资源包中读取;

下面就一步一步来实现了.

App启动时,判断有无最新图片资源

此处主要涉及到的可能的技术点:

1. 如何用基础的网络类库发送网络请求?

先简单封装一个函数来获取,用到了block.block经常用,但到现在都记不太清形式,大都是从其他处copy下,然后改改参数.记不住,也懒得记!

- (void)fetchPatchInfo:(NSString *) urlStr completionHandler:(void (^)(NSDictionary * patchInfo, NSError * error))completionHandler{  NSURLSessionConfiguration * defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];  NSURLSession * defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: self delegateQueue: [NSOperationQueue mainQueue]];  NSURL * url = [NSURL URLWithString:urlStr];  NSURLSessionDataTask * dataTask = [defaultSession dataTaskWithURL:url                          completionHandler:^(NSData * data, NSURLResponse * response, NSError * error) {                            NSDictionary * patchInfo = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];;                            completionHandler(patchInfo, error);                          }];  [dataTask resume];}

原标题:实现iOS图片等资源文件的热更新化(四): 一个最小化的补丁更新逻辑

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。