版本的更迭

作者: 我的梦想之路 | 来源:发表于2016-07-08 10:48 被阅读92次

版本迭代代码

通过OPenURL直接下载

//版本检查
- (void)initVersion
{
/// 通过路径得到服务器最新的版本信息
    NSString *url = @"http://121.40.253.23:8088/dn01/20160622/version.json";
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
/// get请求网络数据
        AFHTTPSessionManager *request = [[AFHTTPSessionManager alloc] init];
        [request GET:url parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
            
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            NSLog(@"=== %@ ",responseObject);
/// 获取网络数据,记录新版本信息(根据你服务器的内容来定)(后文有输出日志)
            _versionDic = [[[responseObject objectForKey:@"version"] objectAtIndex:1] objectForKey:@"ios"];

            NSString *versionCodeStr = [_versionDic objectForKey:@"versionCode"];
            float versionCode = [versionCodeStr floatValue];
            NSLog(@"_versionCode %lf",versionCode);
//// 获取本地版本号(方法不唯一)
            NSString *versionStr = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
            float version = [versionStr floatValue];
            NSLog(@"version %lf ",version);
            NSMutableArray *descArray = [NSMutableArray array];
            NSArray *versionDesc = [_versionDic objectForKey:@"versionDesc"];
            for (int i = 0; i < [versionDesc count]; i ++) {
                [descArray addObject:[[versionDesc objectAtIndex:i] objectForKey:@"desc"]];
            }
/// 一行一行的显示版本更新内容(后文有输出日志)
            NSString *str = [descArray componentsJoinedByString:@"\n"];
            
            /// 判断版本
            if (version > versionCode || version ==versionCode)
            {
                
            }
            else
            {
                UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"发现新版本,是否更新?" message:str preferredStyle: UIAlertControllerStyleAlert];
                UIAlertAction *alertActionOK = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
/// 根据URL(苹果针对于企业证书打包提供的更新路径:@"itms-services://?action=download-manifest&url=%@")后面拼接新版本plist文件URL(下面有日志输出)
                    [[UIApplication sharedApplication]openURL:[NSURL URLWithString:[NSString stringWithFormat:@"itms-services://?action=download-manifest&url=%@",[_versionDic objectForKey:@"updateUrl"]]]];
                }];
#如上,拼接的updateUrl必须支持https,需要一个证书(CE?EA)没记清楚
                UIAlertAction *alertActionCancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                    
                }];
                [alertController addAction:alertActionOK];
                [alertController addAction:alertActionCancel];
                [self presentViewController:alertController animated:YES completion:nil];
             
            }
            
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
             NSLog(@"请求失败 %@",error);
        }];
    });
}

服务器获取的版本信息日志输出

{
    version =     (
                {
            android =             {
                forceUpdate = 0;
                updateUrl = "http://121.40.253.23:8088/dn01/20160622/rse.apk";
                versionCode = 4;
                versionDesc =                 (
                                        {
                        desc = "1 \U7f3a\U9677\U4fee\U6539";
                    },
                                        {
                        desc = "2 \U6dfb\U52a0\U603b\U76d1\U7248\U672c";
                    }
                );
                versionName = "1.0.4";
            };
        },
                {
            ios =             {
                forceUpdate = 0;
/// 新版本plist文件URL
                updateUrl = "https://dn-ceic.qbox.me/rse.plist";

/// 服务器版本号,与本地进行比较
                versionCode = "1.013";  

/// 一行一行的显示版本更新内容
                versionDesc =                 (
                                        {
                        desc = "1 \U7f3a\U9677\U4fee\U6539";
                    },
                                        {
                        desc = "2 \U6dfb\U52a0\U603b\U76d1\U7248\U672c";
                    }
                );
                versionName = "1.013";
            };
        }
    );
} 

企业证书打包比较麻烦,涉及到申请证书和打包选项,下次更新,静待



打包,流程:http://ask.dcloud.net.cn/article/152

(老详细了,不信,你去试一试就知道了,前提你得找到个翻译老师。)

相关文章

  • 版本的更迭

    版本迭代代码 通过OPenURL直接下载 服务器获取的版本信息日志输出 企业证书打包比较麻烦,涉及到申请证书和打包...

  • yum安装高版本nodejs

    CentOS 自带的nodejs版本都很低, 一般是0.10, 现在nodejs版本已经更迭到6.x, 还用低版本...

  • 在 Spring Boot 1.5.3 中进行 Spring M

    在使用 Spring boot 的过程中发现 Spring Boot 的版本更迭非常的快,而不同的版本的很多语法和...

  • XCode8版本更迭

    前段时间接手了一个已经上架的项目,本人小白,以前工作的单位都是老人上架和迭代,萌新只负责写老人们交代的功能模块就...

  • HashMap原理详解,还看不懂算我输(附面试题)

    HashMap的原理与实现 版本之更迭: –》JDK 1.7 : Table数组+ Entry链表;–》JDK1....

  • 如何在Sketch里将描边导出成SVG格式

    Sketch里矢量图形可以直接获取SVG代码的功能已经存在好几个版本啦,虽然sketch版本更迭很快,但是这个功能...

  • 龟叔都推荐!Python3.10再更新版本,全新的七大特点

    随着Python版本的不断更迭,Python3.10版本的正式发布也越来越近,前不久Python官方发布了新的Py...

  • 组件化下的版本管理

    一、组件化早期实践发现的问题 1.组件更迭不规范,大小版本更新不清晰,版本号管理无序 如A组件修改了自身0.0.1...

  • 使用官方脚本安装HUSTOJ

    HUSTOJ已经开源9年了,其间版本更迭,安装方法也不断改进,网络上流传各种版本的安装教程,其实都已经是老皇历,很...

  • 更迭

    自6月14日开赛以来,俄罗斯世界杯无疑是人们茶余饭后的不二话题。这届世界杯非常具有戏剧性,很“冷门”—梅西走了、...

网友评论

    本文标题:版本的更迭

    本文链接:https://www.haomeiwen.com/subject/jgaljttx.html