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

作者: 朱_源浩 | 来源:发表于2018-01-24 17:31 被阅读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];
}

相关文章

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

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

  • 判断版本号大小

    使用的版本号都是 X.X.X 类型的字符串,以往都是“.”分开,然后一个一个进行比较,觉得比较low,后来看了别人...

  • 移动APP--客户端升级方式

    客户端判断是否有升级客户端从服务器获取最新的版本号,本地js判断是否需要升级。 服务器判断是否有升级客户端提交版本...

  • Android8.0应用内升级安装程序

    Android8.0 应用内升级安装程序 1 判断升级 第一步自然是通过后台接口获取最新版本号判断是否需要升级,这...

  • iOS 版本判断

    苹果新出的版本号判断,不用在获取当前设备了。 iOS 11 scrollView偏移64px 判断当前系统大于等于...

  • ios系统版本判断

    ios10.0之后执行相关代码,可以用此判断 或者直接获取手机的系统版本号作为判断

  • iOS 版本号判断

    NSDictionary *infoDict = [[NSBundle mainBundle] infoDicti...

  • ios -版本号判断

    需求: app升级,需要对比本地和线上的版本号 实现方法: 方法一、利用系统自带方法实现 方法二、规定最大位数,不...

  • iOS数据库版本升级问题

    1.判断数据库版本号和保存数据库版本号 保存新版本号存储到NSUserDefaults中 2.数据库升级 // 获...

  • Flutter 版本插件package_info的坑

    最近项目研究版本升级需要然后就接入了官方的 package_info ,sever需要告知版本号判断是不是需要升级...

网友评论

    本文标题:iOS 版本号大小判断(升级判断)

    本文链接:https://www.haomeiwen.com/subject/cuwuaxtx.html