IOS开发入门iOS开发 APP如何实现检测更新
白羽 2019-07-10 来源 :网络 阅读 2447 评论 0

摘要:本文将带你了解IOS开发入门iOS开发 APP如何实现检测更新,希望本文对大家学IOS有所帮助。

    本文将带你了解IOS开发入门iOS开发 APP如何实现检测更新,希望本文对大家学IOS有所帮助。

IOS开发入门iOS开发 APP如何实现检测更新

App检测更新可以使用两种方法。
   第一种是和安卓等系统一样,获取自己服务器的App版本号与已安装的App版本号比较;
   第二种是根据已发布到App Store上的应用版本号与已安装的App版本号比较更新。
   两种方法比较
   第一种检测更新方法的优点是:检测更新速度快、检测稳定;缺点是:和App  Store上的应用版本号不同步(App上架需要审核时间,不确定什么时候成功更新到App Store上)。
   第二种方法检测更新方法的优点是:检测版本号是实时同步的;缺点是:苹果网络不稳定,检测更新有点延时,部分App获取不到任何参数。代码在github的cjq002的CheckVersion上。
   版本号比较方法
   1、获取App当前版本号;
   2、使用NSString自带方法进行比较。
   
    
   跳转到App Store下载
   1、格式化下载链接;
   2、使用系统自带方法跳转到App Store应用下载页。
   
    
   方法一:获取自己服务器版本号检查
   1、通过网络请求获取服务器上的版本号;
   2、调用上面的比较方法,比较前应用版本号和服务器上的版本号;
   3、如果有版本更新则跳转到App Store上下载。
    
    
   注:获取服务器版本号就需要自己去请求了。
   
    
   方法二:获取App Store上架版本号检查
   1、通过网络同步请求获取App Store上对应APP ID的应用信息;
   2、提取信息上的最新版本号等信息;
   3、提取最新版本号;
   4、调用上面的比较方法,比较前应用版本号和最新版本号;
   5、如果有版本更新则跳转到App Store上下载。
   
    
    
   运行效果(以第二种方法,iOS版企鹅应用为例)
   当前版本为3.2.1,请求控制台返回:“发现新版本 6.5.6”
   (Demo在真机上会跳转到AppStore的企鹅下载页);
   当前版本为6.5.6,请求控制台返回:“没有新版本”;
   当前版本为6.6.6,请求控制台返回:“没有新版本”。
   
    
    
   以上是全部步骤, 为了方便大家使用,下面粘上代码。
    
  -  (BOOL)compareVersion:(NSString *)serverVersion { //  获取当前版本号 NSDictionary *infoDic = [[NSBundle mainBundle]  infoDictionary]; NSString *appVersion = [infoDic objectForKey:@"CFBundleShortVersionString"];   //  MARK: 比较当前版本和新版本号大小 /* typedef enum _NSComparisonResult  { NSOrderedAscending = -1L, 升序 NSOrderedSame,  等于 NSOrderedDescending 降序 } */   // MARK:  比较方法 if ([appVersion compare:serverVersion options:NSNumericSearch] ==  NSOrderedAscending) { NSLog(@"发现新版本 %@",  serverVersion); return YES; }else  { NSLog(@"没有新版本"); return NO; }   }    -  (void)aaa {   // 下载地址可以是trackViewUrl,  也可以是items-apps://itunes.apple.com/app/idxxxxxxxxxx NSString *appId =  @"xxxxxxxxx"; NSString *string = [NSString  stringWithFormat:@"items-apps://itunes.apple.com/app/id%@",  appId]; [[UIApplication sharedApplication] openURL:[NSURL  URLWithString:string]]; }    -  (BOOL)checkAppStoreVersionWithAppId:(NSString *)appId {   //  MARK: 拼接链接,转换成URL NSString *checkUrlString = [NSString  stringWithFormat:@"https://itunes.apple.com/lookup?id=%@",  appId]; NSURL *checkUrl = [NSURL  URLWithString:checkUrlString];   // MARK:  获取网路数据AppStore上app的信息 NSString *appInfoString = [NSString  stringWithContentsOfURL:checkUrl encoding:NSUTF8StringEncoding  error:nil];   // MARK: 字符串转json转字典 NSError *error =  nil; NSData *JSONData = [appInfoString  dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *appInfo =  [NSJSONSerialization JSONObjectWithData:JSONData  options:NSJSONReadingMutableLeaves error:&error];   if  (!error && appInfo) { NSArray *resultArr =  appInfo[@"results"]; NSDictionary *resultDic = resultArr.firstObject;   //  版本号 NSString *version =  resultDic[@"trackName"];   // 下载地址 NSString  *trackViewUrl = resultDic[@"trackViewUrl"];   //  FRXME:比较版本号 return [self compareVersion:version];   }else  { // 返回错误 想当于没有更新吧 return  NO; }   }   - (void)viewDidLoad  {   [super viewDidLoad];   static NSString  *appId = @"xxxxxx";   // 返回是否有新版本 BOOL update =  [self checkAppStoreVersionWithAppId:appId];   // 添加自己的代码  可以弹出一个提示框 这里不实现了 if (update) { // 下载地址可以是trackViewUrl,  也可以是item-apps://itunes.apple.com/app/idxxxxxxxx NSString *string = [NSString  stringWithFormat:@"items-apps://itunes.apple.com/app/idxxxxx"]; [[UIApplication  sharedApplication] openURL:[NSURL URLWithString:string]]; } }
        

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程