调试界面程序员首页投稿(暂停使用,暂停投稿)

iOS 版本号大小判断(升级判断)

2018-01-24  本文已影响100人  朱_源浩

需要做升级判断,or 要用到审核开关,就需要用到版本号的大小判断。
(之后找篇文章写写iOS审核开关的事情<有点风险,不轻易乱学>

下面简单写了个版本字符串对比的小方法,
适用的格式是:1.2.2>1.2.1、1.2 > 1.1.9 、1.2 = 1.2.0 。。。也就是适用于xx.xx.xx.xx.....的纯数字版本格式

以下是代码:

+ (NSInteger)compareVersion:(NSString *)version1 toVersion:(NSString *)version2
{
    NSArray *list1 = [version1 componentsSeparatedByString:@"."];
    NSArray *list2 = [version2 componentsSeparatedByString:@"."];
    for (int i = 0; i < list1.count || i < list2.count; i++)
    {
        NSInteger a = 0, b = 0;
        if (i < list1.count) {
            a = [list1[i] integerValue];
        }
        if (i < list2.count) {
            b = [list2[i] integerValue];
        }
        if (a > b) {
            return 1;//version1大于version2
        } else if (a < b) {
            return -1;//version1小于version2
        }
    }
    return 0;//version1等于version2
    
}

接下来,说说我自己做版本升级判断的方式:
主要是思路是:

  1. 将版本号存在本地NSUserDefaults里
  2. 和目前的CFBundleShortVersionString 进行对比
/*
    检查首次安装/升级
 */
+ (void)checkVersionFirstInstall:(void(^)())firstInstall
                                updateInstall:(void(^)())updateInstall
                                             other:(void(^)())other
{
    NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
    NSUserDefaults *persistentDefaults = [NSUserDefaults standardUserDefaults];    
    NSString *localVersion = [persistentDefaults objectForKey:@"localVersion"];
    
    if(!localVersion){
        //首次安装打开
        NSLog(@"首次安装打开");
        if(firstInstall){
            firstInstall();
        }
        //[self setLocalAppVersion]; 按需求看是否在这里就更新本地版本号
    } else if([self compareVersion:appVersion toVersion:localVersion] == 1){
        //升级打开
        NSLog(@"升级打开");
        if(updateInstall){
            updateInstall();
        }
        //[self setLocalAppVersion];
    } else {
        //普通打开
        NSLog(@"普通打开");
        if(other){
            other();
        }
    }
}

//将版本号存到本地
+ (void)setLocalAppVersion
{
    NSString *localVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
    NSUserDefaults *persistentDefaults = [NSUserDefaults standardUserDefaults];  
    [persistentDefaults setObject: localVersion forKey:@"localVersion"];
    [persistentDefaults synchronize];
}

上一篇 下一篇

猜你喜欢

热点阅读