新浪微博客户端(12)-判断当前软件是否是新版本(是否显示新特性)

保存软件版本,通过版本比对来决定是否显示新特性界面。

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    
    
    // 1. 创建窗口
    self.window = [[UIWindow alloc] init];
    self.window.frame = [UIScreen mainScreen].bounds;
    


    // 2. 进行版本判断,根据版本来决定keyWindow的rootViewController
    NSString *versionKey = @"CFBundleVersion";
    // 从Info.plist中读取当前软件版本号
    NSString *currentVersion = [NSBundle mainBundle].infoDictionary[versionKey];
    // 从沙盒中读取保存的历史版本号
    NSString *lastVersion = [[NSUserDefaults standardUserDefaults] objectForKey:versionKey];
    
    
    // 判断当前软件版本号是否与沙盒中保存的一致
    if ([currentVersion isEqualToString:lastVersion]) { // 版本号一致
        DJMainViewController *mainVc = [[DJMainViewController alloc] init];
        self.window.rootViewController = mainVc;
    } else { // 版本号不一致,显示新特性,并将当前软件版本号保存到沙盒
        /* 1.显示新特性 */
        DJNewFeatureViewController *newVc = [[DJNewFeatureViewController alloc] init];
        self.window.rootViewController = newVc;
        /* 2.将当前版本号写入到沙盒 */
        [[NSUserDefaults standardUserDefaults] setValue:currentVersion forKey:versionKey];
        // 立即将内存中的数据同步到沙盒
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
    
    
    // 3. 显示窗口
    [self.window makeKeyAndVisible];
    return YES;
}

跳转到主界面

/** 跳转到主界面 */
- (void)loadMainUI {

    UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
    keyWindow.rootViewController = [[DJMainViewController alloc] init];
    
}
原文地址:https://www.cnblogs.com/yongdaimi/p/5994632.html