iOS程序内实现版本更新
最近这段时间刚把手头里面的两个项目交付出去,很想写点东西但又不想随随便便的写些抒情的文字,其实生活中的很多事情、成长的路上遇到的很多问题,并非简简单单的抱怨、埋怨,用一种激情悲昂的情绪去逃避、去发泄所能解决的。其实很多问题的产生都有它的原因,有些可能是自己造成的,有些可能是别人种下的,遇到问题,解决问题,就是我们成长路上需要学会面对的。其实道理很多人都懂,也都晓得,说别人的时候都像个老师,但是当你面对的时候是否能够静心面对,冷静处理,其实也是需要很大的耐心和勇气的。一直以为优秀是一种习惯,是一种态度,其实问题并不可怕,可怕的是我们没有直面它的勇气和信心。有段话怎么说的,有时会讨厌不甘平庸却又不好好努力的自己,觉得自己不够好,羡慕别人闪闪发光。其实大多人都是普通的,只是别人的付出你没看到。不要沮丧,不必惊慌,做努力爬的蜗牛或坚持飞的笨鸟,我们试着长大,一路跌跌撞撞,然后遍体鳞伤。坚持着,总有一天,你会站在最亮的地方,活成自己曾经渴望的模样。这里添加一段引用别人的话,不过说的真的很好,非常的好。其实无论是开发、还是做人做事、很多的东西需要总结整理,古人说要温故知新、举一反三,其实博大精深的古人遗训还是有其道理的。放下你的浮躁,放下你的懒惰,放下你的三分钟热度,放空你禁不住诱惑的大脑,放开你容易被任何事物吸引的眼睛,放淡你什么都想聊两句八卦的嘴巴。静下心来好好做你该做的事,该好好努力了!有时候真的努力后,你会发现自己要比想象的优秀很多。世上除了生死,其它都是小事。不管遇到了什么烦心事,都不要自己为难自己;无论今天发生多么糟糕的事,都不要对生活失望,因为还有明天。哈哈,最近读了好多心灵鸡汤,在这里稍微分享一下吧,说的是不是很有道理呢。
忙的时候想要休息,项目交付,很多东西整理完毕之后如果还能空出一段时间让自己安排,刚开始看看新闻、欧洲杯、美洲杯、逛逛知乎网站、刷刷空间和朋友圈感觉还挺有意思,时间一长,其实细细一想其实挺没劲的,所以要学会安排好自己的时间,经营好自己的生活。从那以后不在玩手机、刷网页、看新闻,不再随随便便的吐槽、聊天、感叹命运不济、时不我与,不再去过多的关注那些闲谈八卦,开始上班钻研一些自己感兴趣的技术,沟通一些产品的逻辑流程,收集一些好听的歌曲、电影,开始晚上坚持跑步健身,周末不再宅在家里追剧、玩游戏,加了一个旅游群,开始关注旅游信息,开始变得充实知足。长大后感觉很多东西都变了,其实是我们的心随着环境的影响变得不再单纯,不再那么容易知足,很多事情不再愿意倾诉。然而有些是无奈,很多时候并非想象的那样,遇到问题,我们正常的反应就是逃避,其实如果静心思考,冷静面对的话也是我们成长的机会呢。所以生活是一门艺术,也是一门学问,所以我们都要做一个温暖的人。
昨天客户反馈过来一个问题,就是程序更新之后,之前版本用户需要手动更新。结果当时只是根据更新标识做的判断处理,没有拿客户端的版本号和服务器端的版本号比较,结果用户更新完了之后,初始化中返回的强制更新标志还是1,所以一直提示更新。其实需要先拿客户端的版本号和服务器端的版本号比较一下,如果客户端的版本号比服务器端的版本号低并且服务器返回的强制更新标识为1的时候需要提示更新,这样的话就能完美解决问题了。具体可参考下面的代码:
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString *currentVersion = [infoDictionary objectForKey:@"CFBundleVersion"];
NSMutableDictionary *infor = [[XtomManager sharedManager] myinitInfor];
NSString *lastVersion = [infor objectForKey:@"iphone_last_version"];
XtomManager *myManager = [XtomManager sharedManager];
NSMutableDictionary *dict = myManager.myinitInfor;
if((![XtomFunction xfunc_check_strEmpty:lastVersion]))
{
if ([[currentVersion stringByReplacingOccurrencesOfString:@"." withString:@""] integerValue]<[[lastVersion stringByReplacingOccurrencesOfString:@"." withString:@""]integerValue])
{
if ([[dict objectForKey:@"iphone_must_update"]integerValue] == 1)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"有新版本" message:@"新版本进行了大的改动,此版本已不再使用,请立即更新到最新版本" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
[alert show];
alert.tag = 999;
alert.delegate = self;
[alert release];
return;
}
}
}
iOS程序内实现版本更新的更多相关文章
- IOS程序内发短信 MFMessageComposeViewController
文章转载地址:http://www.headsky.org/?p=63 iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewCon ...
- 转: IOS程序内发短信 MFMessageComposeViewController
文章转载地址:http://www.headsky.org/?p=63 iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewCon ...
- iOS开发之调用系统打电话发短信接口以及程序内发短信
在本篇博客开头呢,先说一下写本篇的博客的原因吧.目前在做一个小项目,要用到在本应用程序内发验证码给其他用户,怎么在应用内发送短信的具体细节想不大起来了,于是就百度了一下,发现也有关于这方面的博客,点进 ...
- <转>iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!
原文地址:http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新 获取"产品付费数量等于0 ...
- IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)
上篇 IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源 介绍了纯代码刷新 实现程序内切换语言. 但效率底下,也存在一些问题.暂放弃. ...
- 【转】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程
http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新 获取"产品付费数量等于0这个问题& ...
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取”产品付费数量等于0的问题”】
转的别人的 看到很多童鞋问到,为什么每次都返回数量等于0?? 其实有童鞋已经找到原因了,原因是你在 ItunesConnect 里的 “Contracts, Tax, and Banking”没有完成 ...
- 详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程
Himi 原创, 欢迎转载,转载请在明显处注明! 谢谢. 原文地址:http://blog.csdn.net/xiaominghimi/article/details/6937097 //——201 ...
- unity3d 嵌入iOS的 In App Purchase 应用程序内购买
Unity做东西是快,但是有些功能是需要额外开发的,比如 IAP (In App Purchase,应用程序内购买) 还好unity提供了灵活的扩展功能,允许嵌入原生代码来做一些unity未实现的功能 ...
随机推荐
- D. Tavas and Malekas 解析(字串匹配)
Codeforce 535 D. Tavas and Malekas 解析(字串匹配) 今天我們來看看CF535D 題目連結 題目 給你一個字串$p$和一些$index$代表字串$p$在哪些位置會和長 ...
- 【总结】mysql调优
一.事务 1.事务的特性 (1)原子性(Atomicity),可以理解为一个事务内的所有操作要么都执行,要么都不执行. (2)一致性(Consistency),可以理解为数据是满足完整性约束的,也就是 ...
- python中可迭代对象、迭代器、生成器
可迭代对象 关注公众号"轻松学编程"了解更多. 1.列表生成式 list = [result for x in range(m, n)] g1 = (i for i in rang ...
- 通过一个很常用的场景来展示vue数据驱动的应用
需求:可以动态增减组合条件来进行数据查询. 界面运行效果如下图所示: 界面第一次加载时,默认会显示一个空的查询条件,如下图所示: 点击"加"图标,可以无限增加查询条件,也可以点击& ...
- Java线程池原理及分析
线程池是很常用的并发框架,几乎所有需要异步和并发处理任务的程序都可用到线程池. 使用线程池的好处如下: 降低资源消耗:可重复利用已创建的线程池,降低创建和销毁带来的消耗: 提高响应速度:任务到达时,可 ...
- filter 请求过程中过滤链组装和调用解析
自定义filter需要先下载依赖包 首先过滤链不是责任链的设计模式,因为一个request可以被链条上的多个filter处理.但是,对于责任链来说,一个request只能被链条中的一个handler处 ...
- Jmeter(二十六) - 从入门到精通 - 搭建开源论坛JForum(详解教程)
1.简介 今天这篇文章主要是给大家讲解一下,如何部署测试环境,这里宏哥部署一个开源测论坛,后边的文章中会用到这个论坛,并且也看到童鞋们在群里讨论如何在开发将测试包发给你以后,你如何快速地部署测试环境. ...
- 20 HTTP1.0和HTTP1.1
20 HTTP1.0和HTTP1.1 推荐: http://blog.csdn.net/elifefly/article/details/3964766 请求头Host字段,一个服务器多个网站 长链接 ...
- win10免费通用永久激活秘钥分享 win1020H2正式版序列号推荐
win10最新永久激活密钥神key如下: win10免费密钥 NW06D-722C0-5X6A1-MQ83B-2ER3D win10免费密钥 NP3KM-NQZD6-X406E-1QPKR-4VRZD ...
- iframe框架下的某一页面跳转到另外一个页面
//iframe只在当前页跳转 window.location = "/Admin/Blog/Index"; 只在当前页跳转 而不是整个页面都跳转