iOS程序实现程序的版本新特性显示功能

每个程序都会多个版本,每个版本的功能会进一步优化或调整,将这些功能简明扼要的展示给急于尝鲜的用户,这就是版本新特性的功能。

程序第一次安装或升级之后的第一次启动,都会出现三到四页功能介绍页面,划屏浏览,然后才是正式进入程序。同版本的程序二次启动则没有这些介绍页。这就是版

本新特性现实界面。

如何实现这个功能呢?

需求:第一次安装或版本升级,显示新特性;同版本第二次进入,不显示新特性。

分析:程序启动会显示不同界面,就是window加载的根控制器rootViewController是不相同的。如何让一个程序启动的时候,有选择性的加载不同控制器呢?简单,if语句判断一下就解决了。那么if的判断条件是什么呢?这里牵扯的是版本,自然是版本号了。

比较版本号,决定显示哪个控制器。

比较哪里的版本号呢?比较当前运行程序的版本号和程序沙盒中存储的版本号。这里分以下三种情况:

第一次运行该程序,程序沙盒根本没有保存版本号。当前程序版本号 > 沙盒中版本号:显示新特性。

程序升级了,当前程序版本号 > 沙盒中版本号:显示新特性。(或者不等于)

非首次运行该程序,沙盒中已保存版本号。当前程序版本号 = 沙盒中版本号:不显示新特性。

 1     //    创建window,大小等于屏幕大小
 2     self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
 3     //    获取当前程序的info.plist中的Bundle version版本号,和沙盒中的版本号比较。
 4     //    info.plist中版本号的键值
 5     NSString *key = (__bridge NSString *)kCFBundleVersionKey;
 6     //    当前软件版本号
 7     NSString *newEditionNum = [NSBundle mainBundle].infoDictionary[key];
 8     //    沙盒中的版本号
 9     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
10     NSString *sandBoxEditionNum = [defaults stringForKey:key];
11     //    比较两者的大小(或者判断[newEditionNum isEqualToString:sandBoxEditionNum])
12     if ([newEditionNum compare:sandBoxEditionNum] == NSOrderedDescending) {
13         //        当前版本号存储到沙盒
14         [defaults setObject:newEditionNum forKey:key];
15         //        同步写入
16         [defaults synchronize];
17         //根控制器为新特性控制器
18         self.window.rootViewController = [[TYEditionViewController alloc]init];
19     }else{
20         //根控制器为tabBarController
21         self.window.rootViewController = [[TYTabBarController alloc]init];
22     }
23     //    显示window
24     [self.window makeKeyAndVisible];

时间: 2024-08-06 16:04:17

iOS程序实现程序的版本新特性显示功能的相关文章

[iOS微博项目 - 1.7] - 版本新特性

A.版本新特性 1.需求 第一次使用新版本的时候,不直接进入app,而是展示新特性界面 github: https://github.com/hellovoidworld/HVWWeibo 2.思路 [[NSBundle mainBundle] infoDictionary]取得当前版本号(最新版本),版本号存储在了info.plist中 从preference取得上一次使用的版本号 将讲个版本号进行对比,如果相同就是当前是最新版本,直接进入app:如果不相同,就进入新特性界面并保存最新版本号到

iOS开发 - 第05篇 - 项目 - 03 - 版本新特性 & OAuth授权

1.版本新特性 1.1 界面 程序第一次启动的时候会弹出新特性界面,之后启动不会出现. 1.2 实现思路 1> 新建一个HWNewfeatureViewController(继承自UIViewController) 2> 先将其设置为整个程序的根控制器,用于演示 3> 使用UIScrollView 4>添加UIPageControl 5> 设置UIScrollView代理,监听滚动,设置UIPageControl 2.控制器切换 2.1 一个View中显示其他控制器的View

c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结【转载】

引用:http://blog.csdn.net/attilax/article/details/42014327 c# .net 3.5 4.0 各个版本新特性战略规划总结 1. --------------.Net Framework版本同CLR版本的关系1 2. paip.------------SDK2.0功能-------------2 2.1. 泛型:2 3. --------------sdk3.0  增加了以下功能..2 3.1. LINQ 3 4.  ----------sdk4

Atitit.jquery 版本新特性attilax总结

Atitit.jquery 版本新特性attilax总结 1. Jq1.4 1 2. 1.5 1 3. 1.6 3 4. Jq1.7 3 ⒉提升了事件委派时的性能有了大幅度的提升,尤其是在ie7下: 4 ⒊更好的在 ie 6/7/8 上支持 html5: 4 ⒋切换动画更加直观: 4 ⒌匿名模块定义 awd 4 ⒍jQuery.Deferred 4 ⒎jQuery.isNumeric() 4 5. Jq1.8 5 5.1. jQuery 1.8 5 5.1.1. 可定制 5 5.1.2. 自动生

Atitit.c# .net 3.5 4.0 各个版本新特性战略规划总结

Atitit.c# .net 3.5 4.0 各个版本新特性战略规划总结 1. --------------.Net Framework版本同CLR版本的关系 1 2. paip.------------SDK2.0功能------------- 2 2.1. 泛型: 2 3. --------------sdk3.0  增加了以下功能.. 2 3.1. LINQ 3 4.  ----------sdk4.0 新加功能------------ 3 5. ].Net4.5的五项强大新特性 3 5.

JDK各版本新特性总结

JDK各版本新特性总结 JDK 1.7 新特性  1.switch中可以使用string字符串了 2.<>的运用, List<String> tempList = new ArrayList<>(); 即泛型实例化类型自动推断 3.语法上支持集合,而不一定是数组 final List<Integer> piDigits = [ 1,2,3,4,5,8 ]; 对Java集合(Collections)的增强支持,摒弃了Java集合接口的实现类,如:ArrayLi

TypeScript系列1-1.5版本新特性

1. 简介 随着PC端快速向移动端迁移,移动(体验)优先的概念也越来越响.由于ReactJS目前移动端仅仅支持iOS,因此移动端Web开发框架只能选择: AngularJS/Angula2 + Ionic框架 + Cordova.想要学习好Angula2以及阅读其代码, 就必须了解和学习TypeScript,也因此需要学习好ES6以及Web Component.近期将开始学习TypeScript语言. 下面先看看TypeScript语言的发展: 鉴于JavaScript这种脚本语言很难应用于大规

Atitit..jdk&#160;java&#160;各版本新特性&#160;1.0&#160;1.1&#160;1.2&#160;1.3&#160;1.4&#160;1.5(5.0)&#160;1.6(6.0)&#160;7.0&#160;8.0&#160;9.0&#160;attilax&#160;大总结

Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结 1.1. Java的编年史2 1.2. Java版本:JDK 1.02 1.3. Java版本:JDK 1.13 1.4. Java版本:JDK 1.2 (Java 2)4 1.4.1. 1999年5 1.4.2. 2000年5 1.5. Java版本:JDK 1.35 1.5.1. 2001年6 1.5.2. 2002年7

《转》MySQL 5.7版本新特性连载

MySQL 5.7版本新特性连载(一) 本文将和大家一起分享下5.7的新特性,不过我们要先从即将被删除的特性以及建议不再使用的特性说起.根据这些情况,我们在新版本及以后的版本中,应该不再使用,避免未来产生兼容性问题. 本文是基于MySQL-5.7.7-rc版本,未来可能 还会发生更多变化. 1.即将删除的特性1.1.InnoDB monitoring features,详见:WL#7377(访问地址:http://dev.mysql.com/worklog/task/?id=7377,下面的其他