以iOS为例
说下需求:在主项目中根据需要下载子项目(或文件),并子项目能利用主项目中的cordova-hot-code-push-plugin的跟随主项目更新。一个是包含全部子项目的页面,一个是选择下载子项目后的页面,都是iOS原生。
一、必要条件
1、首先要搭建个本地服务器,可参考在mac系统安装Apache Tomcat的详细步骤(转载自himi的博客,修改了错误添加了图片)_mac 安装 apache tomcat-CSDN博客,简单快捷。
先把要下载的项目压缩包放在本地服务器的 /usr/local/apache-tomcat-7.0.32/webapps/www里面,以便下载。
2、cordova-hot-code-push-plugin插件已安装在项目。
3、本地服务器已开启。
二、下载(iOS原生做的下载)
1、首先要先设置好下载路径,下载路径要跟热更新的下载更新路径是相同的,需要注意一点,文件不是存放在项目文件夹,是存放在项目运行的路径
NSUserDefaults *user=[NSUserDefaults standardUserDefaults];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSAllLibrariesDirectory, NSUserDomainMask, YES);
NSLog(@"------------paths=%@",paths);
NSString *documentsDirectory = [NSString stringWithFormat:@"%@/Application Support/com.ionicframework.superappionic558256/cordova-hot-code-push-plugin/%@/www",[paths objectAtIndex:0],[user objectForKey:@"currentReleaseVersionName"]];
看一下拼接路径:
[paths objectAtIndex:0]:这个不必说,自然是自动获取;
Application Support:值得一提的是这个文件夹,这个文件是进入cordova,ionic页面运行后出现的(个人认为进入cordova就可以有),所以,必须要进入cordova,ionic页面先运行一次,否则没有这个文件夹。此时,肯定有人会说,既然这样那我直接让做管理子项目下载的页面控制器继承于CDVViewController,省了前面的复杂,我利用属性传值测试了一下,CDVViewController与UIViewController之间push的时候要么不传值,要么崩,但是,NSUserDefaults是可以的,原因大家自己去找吧;
com.ionicframework.superappionic558256:测试了一下,清空运行缓存再运行,两次生成的都是这个名字文件夹,这跟config.xml有关,由里面的id决定;
<widget id="com.ionicframework.superappionic558256" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
cordova-hot-code-push-plugin:插件名;
[user objectForKey:@"currentReleaseVersionName"]:当前显示给用户的版本,即chcp.json里面的release对应的值。去HCPPlugin.m里面的doLocalInit方法取值
/**
* Perform initialization of the plugin variables.执行插件的初始化
*/
- (void)doLocalInit {
_defaultCallbackStoredResults = [[NSMutableArray alloc] init];
// init plugin config from xml
_pluginXmlConfig = [HCPXmlConfig loadFromCordovaConfigXml];
// load plugin internal preferences
_pluginInternalPrefs = [HCPPluginInternalPreferences loadFromUserDefaults];
if (_pluginInternalPrefs == nil || _pluginIntern

本文介绍如何在iOS主项目中实现子项目的热更新功能,包括下载子项目、解压缩及更新流程等关键技术点。

1100

被折叠的 条评论
为什么被折叠?



