从iOS8系统开始,用户可以在设置里面设置在WiFi环境下,自动更新安装的App。此功能大大方便了用户,但是一些用户没有开启此项功能,因此还是需要在程序里面提示用户的。

虽然现在苹果审核不能看到版本提示更新的功能和字样以及功能。但是有的app策划还是要提供这些功能。这里主要提供两种思路。

方法一

在服务器接口约定对应的数据,这样,服务器直接传递信息,提示用户有新版本,可以去商店升级

但是这个方法是有问题的,由于您的app在审核过程中 不能出现更新字样,所以在审核过程中就需要接口的返回的字段是新版本,这个时候老用户就会收到更新提示,但是新版本还在审核过程中。行不通。

解决方法

还是需要后台配合,你可以在发送请求的时候 把你当前的版本号 发送给后台 让后台去判断 该不该返回更新版本的信息。

方法二

检测手机上安装的app版本 然后给App store上的版本信息对比判断(目前最常用的方法)

步骤一:获取当前运行版本的信息 通过info.plist的bundle version获取

NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];
//当前版本号
NSString *currentVersion = [infoDic objectForKey:@"CFBundleShortVersionString"];

步骤二:获取appstore中的app版本信息

-(void)judgeAppVersion{<br>  //AppStore访问地址(重点)
NSString *urlStr = @"https://itunes.apple.com//lookup?id=AppID";
NSURL *url = [NSURL URLWithString:urlStr];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
[NSURLConnection connectionWithRequest:req delegate:self];
}
#pragma mark - NSURLConnectionDataDelegate
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
NSError *error;<br>  //解析
NSDictionary *appInfo = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
NSArray *infoContent = [appInfo objectForKey:@"results"];
//最新版本号
NSString *version = [[infoContent objectAtIndex:] objectForKey:@"version"];
//应用程序介绍网址(用户升级跳转URL)
NSString *trackViewUrl = [[infoContent objectAtIndex:] objectForKey:@"trackViewUrl"];
}

解析从AppStore获取到的App信息(这里就只介绍重点使用到的信息)

minimumOsVersion = "8.0";         //App所支持的最低iOS系统
fileSizeBytes = ; //应用的大小
releaseDate = ""; //发布时间
trackCensoredName = ""; //审查名称
trackContentRating = ""; //评级
trackId = ; //应用程序ID
trackName = ""; //应用程序名称
trackViewUrl = ""; //应用程序介绍网址
version = "4.0.3"; //版本号

步骤三:判断当前线上App的版本号与所使用的App版本号是否一致

if (![version isEqualToString:currentVersion]) {
[SimplifyAlertView alertWithTitle:@"检查更新:i店" message:[NSString stringWithFormat:@"发现新版本(%@),是否升级",version] operationResult:^(NSInteger selectedIndex) {
if (selectedIndex == ) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:trackViewUrl]];
}
} cancelButtonTitle:@"取消" otherButtonTitles:@"升级", nil];
}

iOS 关于版本升级问题的解决的更多相关文章

  1. (转)苹果iOS开发者账号过期临时解决方法

    苹果iOS开发者账号过期临时解决办法 苹果iOS开发者账号一年的费用是99美金,作者最近由于各种原因,导致renew没能在账号过期之前支付好,所以在账号过期等待renew的期间,试了试一些非正常手段, ...

  2. mono ios莫名其妙闪退的解决方法

    使用mono进行ios开发也有一年了,一直有个头疼的问题是闪退,而且闪退的时候并没有抛出明确的错误. 前两天在调试一个bug的时候,在序列化的时候又莫名其妙的闪退,后来在一位大神(博客地址)的指导下, ...

  3. ios相同版本升级

    公司新发布ios,因为各种错误以及审核不通过造成app未能上传,而app在提交的时候不能上传相同的版本号,造成app还没有正式的上传上传已经将版本号升级到1.0.6 解决方法: 在Xcode上,查看项 ...

  4. iOS开发-闪退问题-解决之前上架的 App 在 iOS 9 会闪退问题

    最新更新:(2015.10.02) 开发环境: Delphi 10 Seattle OS X El Capitan v10.11 需使用下列 HotfixID: 30398, PAServer Hot ...

  5. ios 静态库冲突的解决办法

    最近在做一个 iOS 的 cocos2d-x 项目接入新浪微博 SDK 的时候被“坑”了,最后终于顺利的解决了.发现网上也有不少人遇到一样的问题,但是能找到的数量有限的解决办法写得都不详细,很难让人理 ...

  6. iOS 7.1耗电严重解决办法

    自从iOS 7.1正式版发布以来,三天后的升级率就已经达到17.9%,预计一周后升级率能突破40%.但是也有不少用户在苹果官方支持论坛上抱怨iOS 7.1系统耗电严重. 名为PJS2006的iPhon ...

  7. iOS移动下上传图片失败解决 (上传多图,带其他参数)

    项目中有一个主要的功能,就是上传图片,结结果移动真的是很奇怪,WiFi,联通,电信都没有问题的情况下,居然在移动下不行,真的是很头疼.不过好在最后是解决了 项目的网络请求我是采用ASIHttpRequ ...

  8. Xcode 只有iOS device一个选项的解决办法

    下载了一个demo准备研究发现只有iOS device,没有其他的机型可选,解决方法比较简单,调下iOS SDK就行了

  9. IOS之TableViewCell重用机制解决上下刷新重复显示

    首先我是一个经验浅薄的iOS开发人员,这个问题想必许多初学者经常遇到这些问题,在面试中也会经常问到.现在我们一一解决. 首先我们要知道TableViewCell重用机制的原理是什么,我们抽象的理解为古 ...

随机推荐

  1. iOS 三方库fmdb 的使用

    使用fmdb 做本地数据的存储非常方便, 1. github 上搜索fmdb 下载压缩包 导入到工程中 (如果你的mac 有cocoapod 也可以直接通过cocoapod 添加) 2. 以下代码是通 ...

  2. iOS开发多线程篇—线程安全

    iOS开发多线程篇—线程安全 一.多线程的安全隐患 资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象.同一个变量.同一个文件 当多个线程访问同一块 ...

  3. Asp.net中GridView使用详解(引)

    GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合GridView和CheckBox结合鼠标移到Gr ...

  4. Android java传递int类型数组给C

    接着前面的文章<Android java传递int类型数据给C><Android java传递string类型数据给C>,继续实践 实现public native int[] ...

  5. TCP/IP 协议难点之一—— IP分片

    1 IP协议简单介绍 就个人而言,网络中,抛开网络安全加密这些,就只单单讨论协议本身,比较难的有三个地方: IP分片与重组 TCP滑动窗口与TCP状态的改变 TCP定时器 其实协议本身根据<TC ...

  6. Win8&Win2012R2如何支持DOTA2输入法

    微软自带的拼音和五笔就不用看了,没研究过,下面的方法应该不支持. 其实方法很简单运行下ctfmon.exe就可以了,这个原来旧输入模式的基础,测试可以支持QQ五笔. PS:使用拼音输入法的用户可以直接 ...

  7. jsoup解析HTML及简单实例

    jsoup 中文参考文献    http://www.open-open.com/jsoup/ 本文将利用jsoup,简单实现网络抓取的功能,并给出一个小实例,该实例效果为:获取作者本人在博客园写的所 ...

  8. mysql源码解读之配置文件

    要研究mysql,最好的资源莫过于源码了,所以本人打算通过调试源码的方式来深入理解mysql的点点滴滴.搭建mysql调试环境很简单,从官方下载mysql源码,利用cmake工具生成工程即可.为了方便 ...

  9. my_strcpy()

    char* my_strcpy(char* des, const char* src){ while(*des++=*src++); return des; }

  10. MSSQL OPTION语句详解

    一些联合表查询语句,这些表里都建立有索引.在没有加 option ( force order ) 前,整个查询费时40多秒,但 单独表 查询基本不到1秒.查看查询计划后发现查询过程是从table n开 ...