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

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

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


如何实现这个功能呢?

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

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

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

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

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

程序升级了,当前程序版本号 > 沙盒中版本号:显示新特性。(升级,版本号肯定变大。没见过升级版本号还变小的)

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

具体思路流程:


代码实现:

//    创建window,大小等于屏幕大小
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//    获取当前程序的info.plist中的Bundle version版本号,和沙盒中的版本号比较。
//    info.plist中版本号的键值
    NSString *key = (__bridge NSString *)kCFBundleVersionKey;
//    当前软件版本号
    NSString *newEditionNum = [NSBundle mainBundle].infoDictionary[key];
//    沙盒中的版本号
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *sandBoxEditionNum = [defaults stringForKey:key];
//    比较两者的大小
    if ([newEditionNum compare:sandBoxEditionNum] == NSOrderedDescending) { 
//        当前版本号存储到沙盒
        [defaults setObject:newEditionNum forKey:key];
//        同步写入
        [defaults synchronize];
        //根控制器为新特性控制器
        self.window.rootViewController = [[XDEditionViewController alloc] init];
    }else{
        //根控制器为tabBarController
        self.window.rootViewController = [[XDTabBarController alloc] init];
    }
//    显示window
    [self.window makeKeyAndVisible];



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值