最近这段时间刚把手头里面的两个项目交付出去,很想写点东西但又不想随随便便的写些抒情的文字,其实生活中的很多事情、成长的路上遇到的很多问题,并非简简单单的抱怨、埋怨,用一种激情悲昂的情绪去逃避、去发泄所能解决的。其实很多问题的产生都有它的原因,有些可能是自己造成的,有些可能是别人种下的,遇到问题,解决问题,就是我们成长路上需要学会面对的。其实道理很多人都懂,也都晓得,说别人的时候都像个老师,但是当你面对的时候是否能够静心面对,冷静处理,其实也是需要很大的耐心和勇气的。一直以为优秀是一种习惯,是一种态度,其实问题并不可怕,可怕的是我们没有直面它的勇气和信心。有段话怎么说的,有时会讨厌不甘平庸却又不好好努力的自己,觉得自己不够好,羡慕别人闪闪发光。其实大多人都是普通的,只是别人的付出你没看到。不要沮丧,不必惊慌,做努力爬的蜗牛或坚持飞的笨鸟,我们试着长大,一路跌跌撞撞,然后遍体鳞伤。坚持着,总有一天,你会站在最亮的地方,活成自己曾经渴望的模样。这里添加一段引用别人的话,不过说的真的很好,非常的好。其实无论是开发、还是做人做事、很多的东西需要总结整理,古人说要温故知新、举一反三,其实博大精深的古人遗训还是有其道理的。放下你的浮躁,放下你的懒惰,放下你的三分钟热度,放空你禁不住诱惑的大脑,放开你容易被任何事物吸引的眼睛,放淡你什么都想聊两句八卦的嘴巴。静下心来好好做你该做的事,该好好努力了!有时候真的努力后,你会发现自己要比想象的优秀很多。世上除了生死,其它都是小事。不管遇到了什么烦心事,都不要自己为难自己;无论今天发生多么糟糕的事,都不要对生活失望,因为还有明天。哈哈,最近读了好多心灵鸡汤,在这里稍微分享一下吧,说的是不是很有道理呢。

    忙的时候想要休息,项目交付,很多东西整理完毕之后如果还能空出一段时间让自己安排,刚开始看看新闻、欧洲杯、美洲杯、逛逛知乎网站、刷刷空间和朋友圈感觉还挺有意思,时间一长,其实细细一想其实挺没劲的,所以要学会安排好自己的时间,经营好自己的生活。从那以后不在玩手机、刷网页、看新闻,不再随随便便的吐槽、聊天、感叹命运不济、时不我与,不再去过多的关注那些闲谈八卦,开始上班钻研一些自己感兴趣的技术,沟通一些产品的逻辑流程,收集一些好听的歌曲、电影,开始晚上坚持跑步健身,周末不再宅在家里追剧、玩游戏,加了一个旅游群,开始关注旅游信息,开始变得充实知足。长大后感觉很多东西都变了,其实是我们的心随着环境的影响变得不再单纯,不再那么容易知足,很多事情不再愿意倾诉。然而有些是无奈,很多时候并非想象的那样,遇到问题,我们正常的反应就是逃避,其实如果静心思考,冷静面对的话也是我们成长的机会呢。所以生活是一门艺术,也是一门学问,所以我们都要做一个温暖的人。

    昨天客户反馈过来一个问题,就是程序更新之后,之前版本用户需要手动更新。结果当时只是根据更新标识做的判断处理,没有拿客户端的版本号和服务器端的版本号比较,结果用户更新完了之后,初始化中返回的强制更新标志还是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程序内实现版本更新的更多相关文章

  1. IOS程序内发短信 MFMessageComposeViewController

    文章转载地址:http://www.headsky.org/?p=63 iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewCon ...

  2. 转: IOS程序内发短信 MFMessageComposeViewController

    文章转载地址:http://www.headsky.org/?p=63 iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewCon ...

  3. iOS开发之调用系统打电话发短信接口以及程序内发短信

    在本篇博客开头呢,先说一下写本篇的博客的原因吧.目前在做一个小项目,要用到在本应用程序内发验证码给其他用户,怎么在应用内发送短信的具体细节想不大起来了,于是就百度了一下,发现也有关于这方面的博客,点进 ...

  4. <转>iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!

    原文地址:http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新   获取"产品付费数量等于0 ...

  5. IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)

    上篇 IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源 介绍了纯代码刷新 实现程序内切换语言. 但效率底下,也存在一些问题.暂放弃. ...

  6. 【转】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程

    http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新   获取"产品付费数量等于0这个问题& ...

  7. 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取”产品付费数量等于0的问题”】

    转的别人的 看到很多童鞋问到,为什么每次都返回数量等于0?? 其实有童鞋已经找到原因了,原因是你在 ItunesConnect 里的 “Contracts, Tax, and Banking”没有完成 ...

  8. 详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程

    Himi  原创, 欢迎转载,转载请在明显处注明! 谢谢. 原文地址:http://blog.csdn.net/xiaominghimi/article/details/6937097 //——201 ...

  9. unity3d 嵌入iOS的 In App Purchase 应用程序内购买

    Unity做东西是快,但是有些功能是需要额外开发的,比如 IAP (In App Purchase,应用程序内购买) 还好unity提供了灵活的扩展功能,允许嵌入原生代码来做一些unity未实现的功能 ...

随机推荐

  1. 正则表达式小应用之对xml格式字符串每个字段加双引号

    通过Python对接口进行自动化后需要把xml格式的报文放到LoadRunner上进行压力测试,在pyCharm控制台打印出报文后,把报文放到LoadRunner中做了格式调整后,每个字段需要添加双引 ...

  2. Tarjan缩点入门

    缩点 顾名思义,缩点就是把一个强连通分量缩成一个点 Tarjan 在dfs的过程中记录时间戳,若能够通过某个点返回已遍历的点,则可以缩点 inline void Tarjan(int x)// st栈 ...

  3. 蒲公英 · JELLY技术周刊 Vol.28: Next.js 10 发布

    蒲公英 · JELLY技术周刊 Vol.28 前端应用到底该选 SSR 还是 CSR?每个项目技术栈决策的时候都会根据实际需求有自己的看法,而在不久前 React 17 发布之后,自然而然也会有同学好 ...

  4. Azure DevOps 扩展之 Hub 插件的菜单权限控制配置

    这是 Hub 插件的描述配置代码片段: { "contributions": [ { "id": "feature-hidden-fields-man ...

  5. Activit的心路历程:获取当前节点的上一节点【可能存在多个】的nodeId

    在我的开发任务中,突然给我提出了一个待办任务需要获取当前任务节点上以任务节点的表单信息,刚开始搞得我有点措手不及,后来仔细是靠后,灵感一下,直接操作流程的bpmn信息就可以获取到节点信息嘛,顺着这个思 ...

  6. python-找不到tk包

    找不到-tk包 直接sudo apt-get install python3-tk 或者sudo apt-get install python-tk 百度上的方法不可信,还是直接这样一句命令来的实在

  7. windows本地破解用户口令

    实验所属系列:操作系统安全 实验对象: 本科/专科信息安全专业 相关课程及专业:信息网络安全概论.计算机网络 实验时数(学分):2学时 实验类别:实践实验类 实验目的 1.了解Windows2000/ ...

  8. C++动态存储方式与静态存储方式

    如果从变量值存在的时间(即生存期)来分,可将程序中的变量分为:动态存储方式和静态存储方式.它们所占用的存储空间区域不同. C++存储空间区域 代码区:存放可执行程序的程序代码.静态存储区:存放静态变量 ...

  9. Scrapy分布式爬虫,分布式队列和布隆过滤器,一分钟搞定?

    使用Scrapy开发一个分布式爬虫?你知道最快的方法是什么吗?一分钟真的能 开发好或者修改出 一个分布式爬虫吗? 话不多说,先让我们看看怎么实践,再详细聊聊细节~ 快速上手 Step 0: 首先安装 ...

  10. Spider_基础总结4_bs.find_all()与正则及lambda表达式

    # beautifulsoup的 find()及find_all()方法,也会经常和正则表达式以及 Lambda表达式结合在一起使用: # 1-bs.find_all()与正则表达式的应用: # 语法 ...