2016-04-11 23:32:25 feng2qing 阅读数 9823

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

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
}
2019-03-08 17:45:26 qq_37269542 阅读数 55

需求:后台判断当前版本来通知前台弹出更新app提示。

实现:获取当前版本号,传入后台,通过后台返回来实现弹框。

因为app在发布测试时为区分不同服务器版本,版本号会出现例如 1.0.0.0-test、1.0.0.0-formal 等等格式的字符串,正式release时只能是3位版本号 1.0.0。而后台的检测又是必须要传入4位纯数字版本号(1.0.0.0),所以需要由前台来做处理。

当为测试版本时提取获取字符串中的x.x.x.x格式的字符串,当为x.x.x三位时末尾补一位.0 (即x.x.x.0)。

具体实现如下: 

extension String {
    //保证版本号是x.x.x.x四位纯数字的版本号
    public func versionCheck() -> String{
        let pattern = "\\d+(\\.\\d+){2,3}"
        var subStr = [String]()
        let regex = try! NSRegularExpression(pattern: pattern, options:[])
        let matches = regex.matches(in: self, options: [], range: NSRange(self.startIndex...,in: self))
        //解析出子串
        for  match in matches {
            subStr.append(contentsOf: [String(self[Range(match.rangeAt(0), in: self)!])])
        }
        if subStr.count == 1 {
            if let s = subStr.first {
                if s.count == 5 {
                    return s + ".0"
                }else {
                    return subStr[0]
                }
            }else {
                return self
            }
        }else {
            return self
        }
    }
}

调用:

 let appversion = (Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "").versionCheck()

 

2019-03-04 18:28:44 qq_15385613 阅读数 25

前言

CheckVersion_Swift 是一款轻量级的 Swift 版本的框架,框架功能:根据 Apple 提供的 API 去请求 JSON ,根据 JSON 中的版本号决定是否去更新原生 App。更新提示的内容可以自定义,也可以是 JSON 中给的内容。

写作 CheckVersion_Swift 框架初衷

通常在做 App 版本检查更新功能的时候,都是后台服务器为我们提供一个获取 App 最新版本信息的接口,并且在每次新版本更新后,都需要人工在后台更改版本信息,这样做其实也可以的,但是费事且不及时。

其实苹果提供了一个很友好的 iTunes 接口,供我们获取 App StoreApp 当前的最新信息。

效果图

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Installation

CheckVersion_Swift is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod 'CheckVersion_Swift'

Use

/// 检查 app 是否需要去 AppStore 做版本更新
///
/// - Parameters:
///   - appId: appId
///   - completion: completion != nil时,显示自定义 view;completion == nil时,直接显示弹出框(显示API 请求内容)
public class func checkVersion(_ appId: String, _ completion: ((_ dict: [String: Any]) -> ())?)
// 直接显示 API请求的 内容
CheckVersion.checkVersion(kAppId, nil)
// 显示自定义 view
CheckVersion.checkVersion(kAppId, { (responseDict) in
    // TODO - 去自定义 view,可以参考demo去实现
})

License

CheckVersion_Swift is available under the MIT license. See the LICENSE file for more info.

Author

如果你有什么建议,可以关注我的公众号:iOS开发者进阶,直接留言,留言必回。

更多文章

苹果技术专家:清后台反而会增加 iPhone 耗电
Swift中C语言指针的访问和转换方法
开源框架 RSA_Swift
iOS SKStoreProductViewController的应用
CocoaPods开源库的搭建
CocoaPods搭建私有库
CocoaPods搭建私有库遇到问题
CocoaPods私有库的升级维护
SKStoreReviewController之程序内评价
App应用程序图标的动态更换
开源框架 MGJRouter_Swift
iOS的MVP设计模式
iOS插件化
iOS FMDB的使用
Swift之ReactiveSwift
OC之ReactiveCocoa
OC之ReactiveCocoa进阶
iOS 性能考虑

2014-10-09 07:09:00 diaojie7118 阅读数 2

swift 获取app版本号及 ios 版本号

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 版本号
 

转载于:https://www.cnblogs.com/ericjun/p/4012479.html

2018-05-14 15:05:49 FlyingFireFish 阅读数 430

APP引导页常需要判断出现的时间,一般是首次进入APP才会出现,对此特写了个方法,判断是否是首次进入APP


    

    //MARK: 判断是不是首次进入APP或者版本更新后首次进入APP

    func isFirstOrUpdateFirstLaunch() -> Bool {

        //获取版本号

        let app_version = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as? String

        

        //上次存储的版本号

        let save_version = UserDefaults.standard.object(forKey: "isFirstIntobs") as? String

        

        /*方法1:

         if save_version == nil || !(app_version == save_version) {

            UserDefaults.standard.setValue(app_version, forKey: "isFirst")

            UserDefaults.standard.synchronize()

            return true

        } else {

            return false

        }*/

        

        //方法2:

        if app_version == save_version {

            return false

        } else {

            UserDefaults.standard.setValue(app_version, forKey: "isFirstIntobs")

            UserDefaults.standard.synchronize()

            return true

        }

    }

 

    


没有更多推荐了,返回首页