• Swift 获取版本号

    2017-05-10 11:01:45
    1.简介iOS的版本号是Version,还有一个叫做Build,这两个值都可以在Xcode 中选中target–>General–>identity 中看到。 1. Version Version在plist文件中的key是“CFBundleShortVersionString”,和AppStore上的...

    1.简介

    iOS的版本号是Version,还有一个叫做Build,这两个值都可以在Xcode 中选中target–>General–>identity 中看到。
    1. Version
    Version在plist文件中的key是“CFBundleShortVersionString”,和AppStore上的版本号保持一致。
    这里写图片描述
    2. Bulid
    Build在plist中的key是“CFBundleVersion”,代表build的版本号,该值每次上传到苹果审核时都应该加1。
    这里写图片描述

    2.获得

    Swift版本

    let infoDictionary = Bundle.main.infoDictionary
    if let infoDictionary = infoDictionary {
        let appVersion = infoDictionary["CFBundleShortVersionString"]
        let appBuild = infoDictionary["CFBundleVersion"]
        PrintLog("version\(appVersion),build\(appBuild)")
      }
    

    OC版本

     NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
        NSString *appVersion = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
         NSString *appBuild = [infoDictionary objectForKey:@"CFBundleVersion"];

    你也可以打印出infoDictionary,看看里面都有什么信息,这些信息都可以通过这种方法获取,像BuildID什么的,info.plist的信息是都可以获取的。

    展开全文
  • Swift3.0获取APP版本号,提示用户升级

    获取当前版本号(版本号是字符串)

    Swift2.3:
    let currentVersion = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String
    
    Swift3.0:
    let currentVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String

    获取历史的版本号(从沙盒中获取)

    ?? : 如果没有值,就让他等于空(“”)

    Swift2.3:
    let sandboxVersion =  NSUserDefaults.standardUserDefaults().objectForKey("CFBundleShortVersionString") as? String ?? ""
    Swift3.0:
    let sandboxVersion = UserDefaults.standard.object(forKey: "CFBundleShortVersionString") as? String ?? ""
    

    比较当前版本号和以前版本号

    Swift2.3:
    if currentVersion.compare(sandboxVersion) == NSComparisonResult.OrderedDescending {
    
            //存储当前的版本到沙盒
            NSUserDefaults.standardUserDefaults().setObject(currentVersion, forKey: "CFBundleShortVersionString")
            //获取到的当前版本 > 之前的版本 = 有新版本
            return true
        }
        //获取到的当前版本 <= 之前的版本 = 没有新版本
        return false
    }
    
    Swift3.0:
    if currentVersion.compare(sandboxVersion) == ComparisonResult.orderedDescending {
    
            //存储当前的版本到沙盒
            UserDefaults.standard.set(currentVersion, forKey: "CFBundleShortVersionString")
            //获取到的当前版本 > 之前的版本 = 有新版本
            return true
        }
        //获取到的当前版本 <= 之前的版本 = 没有新版本
        return false
    }
    展开全文
  • 有时我们在 App 中提交一些统计信息或者用户反馈信息时,为了能更好地进行分析,通常会附带上当前应用程序的名称、版本号、设备型号、以及设备系统版本。下面演示如何获取这些信息。 1,效果图 程序启动...
    有时我们在 App 中提交一些统计信息或者用户反馈信息时,为了能更好地进行分析,通常会附带上当前应用程序的名称、版本号、设备型号、以及设备系统版本。下面演示如何获取这些信息。
    

    1,效果图

    程序启动后自动获取相关的应用信息以及设备信息,并打印到控制台中。



    2,样例代码

    默认情况下我从 UIDevice 中获取设备型号时只能得到 iPhoneiPod Touch 这样笼统的类型数据。
    这里对 UIDevice 做个扩展,使其可以得到具体的设备型号,比如:iPhone 6s Plus 这样准确的设备款式。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    import UIKit
     
    class ViewControllerUIViewController {
     
        override func viewDidLoad() {
            super.viewDidLoad()
             
            //应用程序信息
            let infoDictionary = Bundle.main.infoDictionary!
            let appDisplayName = infoDictionary["CFBundleDisplayName"//程序名称
            let majorVersion = infoDictionary["CFBundleShortVersionString"]//主程序版本号
            let minorVersion = infoDictionary["CFBundleVersion"]//版本号(内部标示)
            let appVersion = majorVersion asString
             
            //设备信息
            let iosVersion = UIDevice.current.systemVersion //iOS版本
            let identifierNumber = UIDevice.current.identifierForVendor //设备udid
            let systemName = UIDevice.current.systemName //设备名称
            let model = UIDevice.current.model //设备型号
            let modelName = UIDevice.current.modelName //设备具体型号
            let localizedModel = UIDevice.current.localizedModel //设备区域化型号如A1533
             
            //打印信息
            print("程序名称:\(appDisplayName)")
            print("主程序版本号:\(appVersion)")
            print("内部版本号:\(minorVersion)")
            print("iOS版本:\(iosVersion)")
            print("设备udid:\(identifierNumber)")
            print("设备名称:\(systemName)")
            print("设备型号:\(model)")
            print("设备具体型号:\(modelName)")
            print("设备区域化型号:\(localizedModel)")
        }
     
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    }
     
     
    //扩展UIDevice
    extension UIDevice {
        //获取设备具体详细的型号
        var modelName: String {
            var systemInfo = utsname()
            uname(&systemInfo)
            let machineMirror = Mirror(reflecting: systemInfo.machine)
            let identifier = machineMirror.children.reduce("") { identifier, element in
                guard let value = element.value asInt8, value != 0 else return identifier }
                return identifier + String(UnicodeScalar(UInt8(value)))
            }
             
            switch identifier {
            case "iPod5,1":                                 return "iPod Touch 5"
            case "iPod7,1":                                 return "iPod Touch 6"
            case "iPhone3,1""iPhone3,2""iPhone3,3":     return "iPhone 4"
            case "iPhone4,1":                               return "iPhone 4s"
            case "iPhone5,1""iPhone5,2":                  return "iPhone 5"
            case "iPhone5,3""iPhone5,4":                  return "iPhone 5c"
            case "iPhone6,1""iPhone6,2":                  return "iPhone 5s"
            case "iPhone7,2":                               return "iPhone 6"
            case "iPhone7,1":                               return "iPhone 6 Plus"
            case "iPhone8,1":                               return "iPhone 6s"
            case "iPhone8,2":                               return "iPhone 6s Plus"
            case "iPhone9,1":                               return "iPhone 7 (CDMA)"
            case "iPhone9,3":                               return "iPhone 7 (GSM)"
            case "iPhone9,2":                               return "iPhone 7 Plus (CDMA)"
            case "iPhone9,4":                               return "iPhone 7 Plus (GSM)"
                 
            case "iPad2,1""iPad2,2""iPad2,3""iPad2,4":return "iPad 2"
            case "iPad3,1""iPad3,2""iPad3,3":           return "iPad 3"
            case "iPad3,4""iPad3,5""iPad3,6":           return "iPad 4"
            case "iPad4,1""iPad4,2""iPad4,3":           return "iPad Air"
            case "iPad5,3""iPad5,4":                      return "iPad Air 2"
            case "iPad2,5""iPad2,6""iPad2,7":           return "iPad Mini"
            case "iPad4,4""iPad4,5""iPad4,6":           return "iPad Mini 2"
            case "iPad4,7""iPad4,8""iPad4,9":           return "iPad Mini 3"
            case "iPad5,1""iPad5,2":                      return "iPad Mini 4"
            case "iPad6,7""iPad6,8":                      return "iPad Pro"
            case "AppleTV5,3":                              return "Apple TV"
            case "i386""x86_64":                          return "Simulator"
            default:                                        return identifier
            }
        }
    }

    展开全文
  • func versionCheck(){  let infoDictionary = NSBundle.mainBundle().infoDictionary  let appDisplayName: AnyObject? = infoDictionary!["CFBundleDisplayName"] ... let majorVersion

    func versionCheck(){

            let infoDictionary = NSBundle.mainBundle().infoDictionary

            let appDisplayName: AnyObject? = infoDictionary!["CFBundleDisplayName"]

            let majorVersion : AnyObject? = infoDictionary! ["CFBundleShortVersionString"]

            let minorVersion : AnyObject? = infoDictionary! ["CFBundleVersion"]

            let appversion = majorVersion as String

            let iosversion : NSString = UIDevice.currentDevice().systemVersion   //ios 版本

            let identifierNumber = UIDevice.currentDevice().identifierForVendor   //设备 udid

            let systemName = UIDevice.currentDevice().systemName   //设备名称

            let model = UIDevice.currentDevice().model   //设备型号

            let localizedModel = UIDevice.currentDevice().localizedModel   //设备区域化型号  A1533

     

            

            println(appversion)

        }





    majorVersion 主程序版本号

    minorVersion build 版本号
    复制代码
    展开全文
  • Swift获取应用版本号:version 1、获取本地版本号 /// 获取本地版本号 func getLocalVersion() -> String { var localVersion:String = "" //当前版本 if let v:String = Bundle.main.object...

    Swift获取应用版本号:version 

    1、获取本地版本号

    /// 获取本地版本号
    func getLocalVersion() -> String {
        var localVersion:String = ""
        //当前版本
        if let v:String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String{
            localVersion = v
        }
    
        return localVersion
    }

    如果想获取build号:替换key 为“CFBundleVersion”即可。

     

    2、比较两个版本大小:

    这里有个误区,可能有些人觉得直接比较就可以了,其实这样是错误的,比如:

    v1.1.10 和 v1.1.2  ,直接比较后者>前者,但实际上【1.1.2 < 1.1.10】。

    所以下面的比较原理,其实是分割比较:

    参考代码:

    /// 比较版本大小,返回是否需要更新
    ///
    /// - Parameters:
    ///   - v1: 版本1- 新版本
    ///   - v2: 版本2- 当前版本
    /// - Returns: true:v1>v2    false:v1<=v2
    func compareVersions(v1:String,v2:String) -> Bool {
        if v1.isEmpty && v2.isEmpty || v1.isEmpty{
            return false
        }
        
        if v2.isEmpty {
            return true
        }
        
        let arry1 = v1.components(separatedBy: ".")
        let arry2 = v2.components(separatedBy: ".")
        //取count少的
        let minCount = arry1.count > arry2.count ? arry2.count : arry1.count
        
        var value1:Int = 0
        var value2:Int = 0
        
        for i in 0..<minCount {
            if !isPurnInt(string: arry1[i]) || !isPurnInt(string: arry2[i]){
                return false
            }
           
            value1 = Int(arry1[i])!
            value2 = Int(arry2[i])!
          
            // v1版本字段大于v2版本字段
            if value1 > value2 {
               // v1版本字段大于v2版本字段
               return true
            }else if value1 < value2{
               // v1版本字段小于v2版本字段
               return false
            }
            // v1版本=v2版本字段  继续循环
            
        }
        
        //字段多的版本高于字段少的版本
        if arry1.count > arry2.count {
            return true
        }else if arry1.count <= arry2.count {
            return false
        }
        
        return false
    }
    
    /// 判断是否是数字
    ///
    /// - Parameter string: <#string description#>
    /// - Returns: <#return value description#>
    func isPurnInt(string: String) -> Bool {    
        let scan: Scanner = Scanner(string: string)    
        var val:Int = 0    
        return scan.scanInt(&val) && scan.isAtEnd    
    }

     

    转载于:https://www.cnblogs.com/yajunLi/p/5868142.html

    展开全文
  • 一个项目开发和发布由公司中不同部门的人负责,当开发项目的人用最新的Xcode写代码、而负责打包的同事因为特殊原因不能升级Xcode的时候,开发的同事就必须迁就发布的同事了,此时将会用到以Swfit版本号为依据的条件...
  • Swift 判断系统版本

    2018-03-20 19:47:24
    //MARK: iOS 8.0 及以上if #available(iOS 8.0, *){ } else{ }也可以判断其他比如MacOS , watchOSif #available(watchOS 1.0, *) { } if #available(OSX 10.11, *) { } if #availa...
  • Swift版本历史和各版本特性 author:Crius time:2020/5/12 type:学习笔记 发展历程: 从2014年至今,已经有15个版本发布,其中5个大版本,10个小版本; 与之对比的是Objective-C从80年代至今,只有两个版本; ...
  • swift中那些有关于判断版本更新的注意事项
  • == 1.0表示使用1.0版本 >= 1.0表示使用1.0或更高的版本 ~> 1.0表示使用版本1.0以上但是低于2.0的最新版本,如1.2,1.6
  • 1、从App Store获取版本号 func appStoreVersion(appId: String) { let config = URLSessionConfiguration.default let session = URLSession(configuration: config) let url = URL(string: "h...
  • Swift判断API的有效性

    2015-10-16 17:11:50
    原文出自:Swift判断API的有效性前言我们在Swift开发中,为了适配不同的系统版本,我们必须要对API的兼容性做处理。因此这里总结一下在Swift开发中对API有效性的常用判断方式。 说明:本文中的Swift开发语言是基于...
  • IOS 版本号大小比较

    2015-07-08 16:40:45
    NSString *num1 = @"5.2.0"; NSString *num2 = @"5.3.0";  if ([num1 compare:num2 options:NSNumericSearch] ==NSOrderedDescending)  {  ULog(@"%@ is bigger",num1);  } else { 
  • 许多优秀的 Swift 第三方框架还没有来得及迎接 Swift 4.0 的到来,它们还停留在 Swift3.x 的状态。 这个时候新建一个项目,使用cocoapods 引入所需的第三方,即使 pod install 成功后,一编译工程就是满屏红, 且...
  • I have an IOS app with an Azure back-end, and would like to log certain events, like logins and whi
  • swift本地存储

    2017-09-01 09:09:55
    前言:在我们开发过程中,不管是你做啥子应用,都要遇到数据的保存问题。将数据保存本地,这样让程序的运行更加...文件操作知识临时充饥看我上篇文章:Swift文件管理必知的一些操作 1.使用NSUserDefaults存储数据 NSUse
  • 这是MJRefresh的swift版本,先OC原版奉上MJRefresh,JRefresh为纯Swift版本,支持swift3.2以上,iOS8.0以上版本。代码逻辑和MJRefresh基本一模一样,本来一开始打算用swift的面向协议思想改写的,发现行不通只好用原...
  • let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String let appName = Bundle.main.infoDictionary!["CFBundleDisplayName"] as!...链接: iOS 获取当前app的名称和版本号 ...
  • 版本号 时间 Swift 1.0 2014-08-18 Swift 1.1 2014-10-16 Swift 1.2 2015-04-08 Swift 2.0 2015-09-16 Swift 2.1 2015-10-20 Swift 2.2 ...
  • private func checkUpdate() { let path = NSString(format: "http://itunes.apple.com/cn/lookup?id=%@", AppConfig.appStoreID) as String let url = NSURL(string: path) let request =
1 2 3 4 5 ... 20
收藏数 8,450
精华内容 3,380