ios版本更新

发布时间:2016-12-11 14:14:59 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"ios版本更新",主要涉及到ios版本更新方面的内容,对于ios版本更新感兴趣的同学可以参考一下。

agma mark - 检查更新   - (void)checkUpdateWithAPPID:(NSString *)APPID   {       //获取当前应用版本号       NSDictionary *appInfo = [[NSBundle mainBundle] infoDictionary];           NSString *currentVersion = [appInfo objectForKey:@"CFBundleVersion"];              NSString *updateUrlString = [NSString stringWithFormat:@"http://itunes.apple.com/lookup?id=%@",APPID];       NSURL *updateUrl = [NSURL URLWithString:updateUrlString];       versionRequest = [ASIFormDataRequest requestWithURL:updateUrl];       [versionRequest setRequestMethod:@"GET"];       [versionRequest setTimeOutSeconds:60];       [versionRequest addRequestHeader:@"Content-Type" value:@"application/json"];              //loading view       CustomAlertView *checkingAlertView = [[CustomAlertView alloc] initWithFrame:NAVIGATION_FRAME style:CustomAlertViewStyleDefault noticeText:@"正在检查更新..."];       checkingAlertView.userInteractionEnabled = YES;       [self.navigationController.view addSubview:checkingAlertView];       [checkingAlertView release];              [versionRequest setCompletionBlock:^{                      [checkingAlertView removeFromSuperview];                      NSError *error = nil;           NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:[versionRequest responseData] options:NSJSONReadingMutableContainers error:&error];           if (!error) {               if (dict != nil) {                   //            DLog(@"dict %@",dict);                   int resultCount = [[dict objectForKey:@"resultCount"] integerValue];                   if (resultCount == 1) {                       NSArray *resultArray = [dict objectForKey:@"results"];                       //                DLog(@"version %@",[resultArray objectAtIndex:0]);                       NSDictionary *resultDict = [resultArray objectAtIndex:0];                       //                DLog(@"version is %@",[resultDict objectForKey:@"version"]);                       NSString *newVersion = [resultDict objectForKey:@"version"];                                              if ([newVersion doubleValue] > [currentVersion doubleValue]) {                           NSString *msg = [NSString stringWithFormat:@"最新版本为%@,是否更新?",newVersion];                           newVersionURlString = [[resultDict objectForKey:@"trackViewUrl"] copy];                           DLog(@"newVersionUrl is %@",newVersionURlString);                           //                    if ([newVersionURlString hasPrefix:@"https"]) {                           //                         [newVersionURlString replaceCharactersInRange:NSMakeRange(0, 5) withString:@"itms-apps"];                           //                    }                           UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:msg delegate:self cancelButtonTitle:@"暂不" otherButtonTitles:@"立即更新", nil nil];                           alertView.tag = 1000;                           [alertView show];                           [alertView release];                       }else                       {                           UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"您使用的是最新版本!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil nil];                           alertView.tag = 1001;                           [alertView show];                           [alertView release];                       }                   }               }           }else           {               DLog("error is %@",[error debugDescription]);           }       }];              [versionRequest setFailedBlock:^{           [checkingAlertView removeFromSuperview];                      CustomAlertView *alertView = [[CustomAlertView alloc] initWithFrame:NAVIGATION_FRAME style:CustomAlertViewStyleWarning noticeText:@"操作失败,请稍候再试!"];           [self.navigationController.view addSubview:alertView];           [alertView release];           [alertView selfRemoveFromSuperviewAfterSeconds:1.0];       }];              [versionRequest startSynchronous];     }      - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex   {       DLog(@"newVersionUrl  is %@",newVersionURlString);       if (buttonIndex) {           if (alertView.tag == 1000) {               if(newVersionURlString)               {                   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:newVersionURlString]];               }           }       }   如果我们要检测app版本的更新,那么我们必须获取当前运行app版本的版本信息和appstore 上发布的最新版本的信息。 当前运行版本信息可以通过info.plist文件中的bundle version中获取: [cpp] view plaincopy NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];       CFShow(infoDic);              NSString *appVersion = [infoDic objectForKey:@"CFBundleVersion"];   这样就获取到当前运行的app的版本了 要获取当前app store上的最新的版本,有两种方法, 一、在某特定的服务器上,发布和存储app最新的版本信息,需要的时候向该服务器请求查询。 二、从app store上查询,可以获取到app的作者,连接,版本等。官方相关文档 www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.htm 具体步骤如下: 1,用 POST 方式发送请求: http://itunes.apple.com/search?term=你的应用程序名称&entity=software 更加精准的做法是根据 app 的 id 来查找: http://itunes.apple.com/lookup?id=你的应用程序的ID #define APP_URL http://itunes.apple.com/lookup?id=你的应用程序的ID 你的应用程序的ID 是 itunes connect里的 Apple ID 2,从获得的 response 数据中解析需要的数据。因为从 appstore 查询得到的信息是 JSON 格式的,所以需要经过解析。解析之后得到的原始数据就是如下这个样子的: {       resultCount = 1;       results =     (                   {               artistId = 开发者 ID;               artistName = 开发者名称;              price = 0;              isGameCenterEnabled = 0;               kind = software;               languageCodesISO2A =             (                   EN               );              trackCensoredName = 审查名称;               trackContentRating = 评级;               trackId = 应用程序 ID;               trackName = 应用程序名称";               trackViewUrl = 应用程序介绍网址;               userRatingCount = 用户评级;               userRatingCountForCurrentVersion = 1;               version = 版本号;               wrapperType = software;        }       );   }   然后从中取得 results 数组即可,具体代码如下所示: NSDictionary *jsonData = [dataPayload JSONValue];   NSArray *infoArray = [jsonData objectForKey:@"results"];   NSDictionary *releaseInfo = [infoArray objectAtIndex:0];   NSString *latestVersion = [releaseInfo objectForKey:@"version"];   NSString *trackViewUrl = [releaseInfo objectForKey:@"trackViewUrl"];   如果你拷贝 trackViewUrl 的实际地址,然后在浏览器中打开,就会打开你的应用程序在 appstore 中的介绍页面。当然我们也可以在代码中调用 safari 来打开它。 UIApplication *application = [UIApplication sharedApplication];   [application openURL:[NSURL URLWithString:trackViewUrl]];   代码如下: -(void)onCheckVersion {     NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];     //CFShow((__bridge CFTypeRef)(infoDic));     NSString *currentVersion = [infoDic objectForKey:@"CFBundleVersion"];     NSString *URL = @"http://itunes.apple.com/lookup?id=你的应用程序的ID";     NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];     [request setURL:[NSURL URLWithString:URL]];     [request setHTTPMethod:@"POST"];     NSHTTPURLResponse *urlResponse = nil;     NSError *error = nil;     NSData *recervedData = [NSURLConnection sendSynchronousRequest:requestreturningResponse:&urlResponse error:&error];          NSString *results = [[NSString alloc] initWithBytes:[recervedData bytes] length:[recervedDatalength] encoding:NSUTF8StringEncoding];     NSDictionary *dic = [results JSONValue];     NSArray *infoArray = [dic objectForKey:@"results"];     if ([infoArray count]) {         NSDictionary *releaseInfo = [infoArray objectAtIndex:0];         NSString *lastVersion = [releaseInfo objectForKey:@"version"];                  if (![lastVersion isEqualToString:currentVersion]) {             //trackViewURL = [releaseInfo objectForKey:@"trackVireUrl"];             UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"更新" message:@"有新的版本更新,是否前往更新?" delegate:self cancelButtonTitle:@"关闭" otherButtonTitles:@"更新", nil];             alert.tag = 10000;             [alert show];         }         else         {             UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"更新" message:@"此版本为最新版本"delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];             alert.tag = 10001;             [alert show];         }     } } - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {     if (alertView.tag==10000) {         if (buttonIndex==1) {             NSURL *url = [NSURL URLWithString:@"https://itunes.apple.com"];             [[UIApplication sharedApplication]openURL:url];         }     } }

上一篇:Hadoop Mapreduce multiple Input files
下一篇:深刻理解C#的传值调用和传引用调用

相关文章

关键词: ios版本更新

相关评论