`

检查更新

    博客分类:
  • ios
 
阅读更多
  1. #pragma mark - 检查更新  
  2. - (void)checkUpdateWithAPPID:(NSString *)APPID  
  3. {  
  4.     //获取当前应用版本号  
  5.     NSDictionary *appInfo = [[NSBundle mainBundle] infoDictionary];      
  6.     NSString *currentVersion = [appInfo objectForKey:@"CFBundleVersion"];  
  7.       
  8.     NSString *updateUrlString = [NSString stringWithFormat:@"http://itunes.apple.com/lookup?id=%@",APPID];  
  9.     NSURL *updateUrl = [NSURL URLWithString:updateUrlString];  
  10.     versionRequest = [ASIFormDataRequest requestWithURL:updateUrl];  
  11.     [versionRequest setRequestMethod:@"GET"];  
  12.     [versionRequest setTimeOutSeconds:60];  
  13.     [versionRequest addRequestHeader:@"Content-Type" value:@"application/json"];  
  14.       
  15.     //loading view  
  16.     CustomAlertView *checkingAlertView = [[CustomAlertView alloc] initWithFrame:NAVIGATION_FRAME style:CustomAlertViewStyleDefault noticeText:@"正在检查更新..."];  
  17.     checkingAlertView.userInteractionEnabled = YES;  
  18.     [self.navigationController.view addSubview:checkingAlertView];  
  19.     [checkingAlertView release];  
  20.       
  21.     [versionRequest setCompletionBlock:^{  
  22.           
  23.         [checkingAlertView removeFromSuperview];  
  24.           
  25.         NSError *error = nil;  
  26.         NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:[versionRequest responseData] options:NSJSONReadingMutableContainers error:&error];  
  27.         if (!error) {  
  28.             if (dict != nil) {  
  29.                 //            DLog(@"dict %@",dict);  
  30.                 int resultCount = [[dict objectForKey:@"resultCount"] integerValue];  
  31.                 if (resultCount == 1) {  
  32.                     NSArray *resultArray = [dict objectForKey:@"results"];  
  33.                     //                DLog(@"version %@",[resultArray objectAtIndex:0]);  
  34.                     NSDictionary *resultDict = [resultArray objectAtIndex:0];  
  35.                     //                DLog(@"version is %@",[resultDict objectForKey:@"version"]);  
  36.                     NSString *newVersion = [resultDict objectForKey:@"version"];  
  37.                       
  38.                     if ([newVersion doubleValue] > [currentVersion doubleValue]) {  
  39.                         NSString *msg = [NSString stringWithFormat:@"最新版本为%@,是否更新?",newVersion];  
  40.                         newVersionURlString = [[resultDict objectForKey:@"trackViewUrl"] copy];  
  41.                         DLog(@"newVersionUrl is %@",newVersionURlString);  
  42.                         //                    if ([newVersionURlString hasPrefix:@"https"]) {  
  43.                         //                         [newVersionURlString replaceCharactersInRange:NSMakeRange(0, 5) withString:@"itms-apps"];  
  44.                         //                    }  
  45.                         UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:msg delegate:self cancelButtonTitle:@"暂不" otherButtonTitles:@"立即更新", nil nil];  
  46.                         alertView.tag = 1000;  
  47.                         [alertView show];  
  48.                         [alertView release];  
  49.                     }else  
  50.                     {  
  51.                         UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"您使用的是最新版本!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil nil];  
  52.                         alertView.tag = 1001;  
  53.                         [alertView show];  
  54.                         [alertView release];  
  55.                     }  
  56.                 }  
  57.             }  
  58.         }else  
  59.         {  
  60.             DLog("error is %@",[error debugDescription]);  
  61.         }  
  62.     }];  
  63.       
  64.     [versionRequest setFailedBlock:^{  
  65.         [checkingAlertView removeFromSuperview];  
  66.           
  67.         CustomAlertView *alertView = [[CustomAlertView alloc] initWithFrame:NAVIGATION_FRAME style:CustomAlertViewStyleWarning noticeText:@"操作失败,请稍候再试!"];  
  68.         [self.navigationController.view addSubview:alertView];  
  69.         [alertView release];  
  70.         [alertView selfRemoveFromSuperviewAfterSeconds:1.0];  
  71.     }];  
  72.       
  73.     [versionRequest startSynchronous];    
  74. }  
  75.   
  76. - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex  
  77. {  
  78.     DLog(@"newVersionUrl  is %@",newVersionURlString);  
  79.     if (buttonIndex) {  
  80.         if (alertView.tag == 1000) {  
  81.             if(newVersionURlString)  
  82.             {  
  83.                 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:newVersionURlString]];  
  84.             }  
  85.         }  
  86.     }  
  87. }  
分享到:
评论

相关推荐

    自动检测更新功能后下载更新

    在IT行业中,自动检测更新和下载更新是一项非常重要的功能,特别是在软件开发和维护领域。它允许用户无需手动检查和安装最新版本,系统可以自动完成这一过程,确保软件始终保持最新的安全性和功能性。以下是对这一...

    Winform开发的自动检查更新程序源码

    自动检查更新是现代软件系统不可或缺的一部分,它允许应用程序在后台检测是否有新的版本或补丁可用,以确保用户始终运行的是最新、最安全的版本。对于Winform应用,这一功能可以极大地提高用户体验,减少技术支持的...

    vue项目+hbuilder打包实现app自动检测更新并下载(需要可以私聊我)

    vue项目+hbuilder打包实现app自动检测更新并下载vue项目+hbuilder打包实现app自动检测更新并下载

    Electron检测更新

    在“Electron检测更新”这个主题中,我们主要关注如何在基于Electron的应用程序中实现在Windows和Mac操作系统上的自动更新功能。 首先,我们需要了解`electron-builder`,这是一个强大的工具,用于构建、打包和发布...

    Android软件检测更新

    在Android平台上,应用程序的检测更新是一项关键功能,它确保用户能够获取到最新的功能、修复和安全补丁。本文将深入探讨如何实现Android软件的自动检测更新机制。 首先,我们需要理解更新检测的基本流程: 1. **...

    Android自动检测更新源码

    这个"Android自动检测更新源码"的项目,旨在介绍如何在Android应用程序中集成自动检查和安装新版本更新的功能。通过理解并分析提供的源码,我们可以深入学习Android的网络通信、文件下载以及权限管理等多个方面的...

    Winform完善检查更新.rar

    "Winform完善检查更新.rar"可能是一个包含示例代码或项目的压缩包,旨在教你如何在WinForm应用中实现自动检查更新功能。自动检查更新对于确保用户始终运行最新、最安全的软件版本至关重要。下面将详细探讨WinForm...

    Winform检查更新.zip

    2. **客户端检测**:在WinForm应用启动时,或用户触发检查更新时,应用会向服务器发送请求,获取当前的版本信息。这通常通过HTTP请求实现,如发送GET请求到一个特定的API接口。 3. **比较版本号**:客户端收到...

    Android-一个简单小巧的Android检查更新库

    标题 "Android-一个简单小巧的Android检查更新库" 指涉的是一个专门针对Android应用程序设计的轻量级库,其主要功能是检测应用在应用市场上的最新版本信息。这样的库对于开发者来说非常实用,因为它简化了应用内更新...

    VB检查更新源码仅20几KB

    标题中的“VB检查更新源码仅20几KB”指的是使用Visual Basic(VB)编程语言编写的代码,用于实现软件的自动更新功能。这个源码非常小巧,只有24KB,意味着它高度优化且不依赖任何额外的大型库或控件,这在资源有限...

    android 应用更新功能 检测更新 自动下载安装 demo updatedemo

    在Android应用开发中,实现应用自动检测更新、下载并安装的功能是提高用户体验和保持软件最新状态的关键。"updatedemo"通常是指一个示例项目,它展示了如何构建这样的更新机制。以下将详细介绍这个过程中的关键知识...

    APP版本检测更新

    在移动应用开发中,"APP版本检测更新"是一项至关重要的功能,它确保用户始终能够使用最新、最安全的软件版本。这项功能通常包括以下几个关键部分: 1. **版本检测**:应用程序启动时或在特定时间间隔内,通过HTTP...

    检测app版本

    在移动应用开发中,定期检测并更新APP版本是至关重要的,它确保用户始终运行着安全、稳定且功能最新的软件。这个“检测app版本”的DEMO就是为此目的设计的,提供了基本的版本检测机制,帮助开发者实现自动或手动的...

    Delphi Android APP 自动检查更新(2020.07)

    自动检查更新功能的关键在于客户端应用能够定期与服务器通信,检测是否有新版本的APP可供下载。这个过程通常涉及以下几个步骤: 1. **服务器端设置**:你需要在服务器上维护一个版本信息文件(如fso.json),其中...

    app启动检查更新弹窗提示功能的实现

    6. **弹窗提示**:当检测到有更新时,应用会创建一个对话框或浮窗,显示更新信息,如新版本特性、更新日志,并提供“立即更新”和“稍后提醒”的选项。 7. **下载管理**:点击“立即更新”后,应用会启动一个下载...

    ios-版本检测更新.zip

    这个名为"ios-版本检测更新.zip"的压缩包提供了一个简洁的解决方案,它涉及到以下几个关键知识点: 1. **版本检测**:在iOS应用中,通常通过与Apple App Store通信来检查当前应用的最新版本。这一过程可以通过调用...

    WPF自动检测更新版本

    标题“WPF自动检测更新版本”和描述所提及的内容,主要涉及如何在WPF客户端应用中设计并实现这样一个系统。下面将详细介绍这个过程及其相关知识点。 一、版本管理 1. 版本号:每个软件发行版都有一个唯一的版本号,...

    ipad正在检查更新系统解决方法.docx

    iPad 正在检查更新系统解决方法 在 iPad 或 iPhone 越狱后,用户可能会遇到一直显示正在检查更新界面的问题,这是因为越狱后自动屏蔽更新了。解决方法之一是关闭 iOS 固件自动升级选项。下面将详细介绍解决方法。 ...

    android 程序自动检测更新

    在Android应用程序开发中,实现“自动检测更新”的功能是一项重要的技术实践,它能确保用户始终使用的是最新版本的软件,从而提高用户体验并保障应用的安全性。以下是对这一主题的详细阐述: 首先,我们要理解自动...

    Android代码-检查更新通知下载

    检测更新软件 API 1.编写version.xml 1 my app name <title>新版本:0.1</title> Test to the latest version, please update! http://yyy.yyy.yyy.yyy/test.apk 2.发布version.xml到...

Global site tag (gtag.js) - Google Analytics