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未实现的功能 ...
随机推荐
- NB-IoT的数据链路层和上行传输信道类型
NB-IoT的数据链路层 NB-IoT在LTE系统的基础上对数据链路层进行了大量简化,但整体上还是保持了原有的框架.数据链路层是二层协议,包含了3个子层:MAC子层.RLC子层和PDCP子层. 以网络 ...
- nb-iot技术能自组网吗
NB-IoT是运营商主导的网络,运营在授权频段上,LoRa运营在开放频段上,可以由企业自主建设.NB-IoT构建于蜂窝网络,只消耗大约180KHz的带宽,可直接部署于GSM网络.UMTS网络或LTE网 ...
- 4G DTU采用的4G通信模块介绍
4g通信模块一种基于4G网络进行数据传输的工业级通讯终端,其主要作用是将采集到的传感器数据.仪表数据,传输至服务器/上位机.监控中心.众山研发生产的4g无线通讯设备--4G DTU是一款物联网数据 ...
- 4G DTU为什么要具有透传的功能
4G DTU为什么要透传 透传的目的就是为了在数据传输的过程中不对数据做任何出来,实现发送方和接收方的数据完全一样,长度和内容完全没有变化.它主要是使用在智能设备之间的远程串口数据传输,是一种和传输方 ...
- 【译】Rust,无畏并发
原文链接:https://dev.to/imaculate3/fearless-concurrency-5fk8 > 原文标题:That's so Rusty! Fearless concurr ...
- glog修改
在写代码的过程中,打log肯定是少不了的,毕竟不能总靠调试来发现问题.log库的选用就很纠结了,成熟的log库非常多,log4cpp.log4cxx.poco.log.boost.log.glog等等 ...
- 为什么要谨慎使用Arrays.asList、ArrayList的subList?
1. 使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用: List<Integer> statusList = Arrays.asL ...
- leetcode45:maximum depth of binary tree
题目描述 求给定二叉树的最大深度, 最大深度是指树的根结点到最远叶子结点的最长路径上结点的数量. Given a binary tree, find its maximum depth. The ma ...
- 21 Ajax
21 Ajax AJAX,Asynchronous JavaScript and XML(异步的 JavaScript 和 XML), 是与在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页 ...
- C++ 基础 4:继承和派生
1 继承和派生 在 C++ 中 可重用性是通过继承这一机制实现的.继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易.这样做,也达到了重用代码功能和提高执行效率的效果. 当创 ...