美文网首页iOS 进阶文集iOS学习iOS程序猿
iOS 检查更新升级版 版本信息类(swift)的

iOS 检查更新升级版 版本信息类(swift)的

作者: super_chao | 来源:发表于2016-11-23 17:52 被阅读764次

    我们这里描述的不是svn 或者是git 的使用
    本地建立一个版本管理类对于版本的更新和版本相关内容的使用会变的很方便。也是 我们代码大神话的必要之路 。
    当然现在商店版的项目不需要做检查更新等功能(appstore有新版本会提示),有些项目还是会有版本更新功能的
    废话不多说直接上代码。

    <pre>
    import UIKit
    class VersionX: NSObject {
    static let current = VersionX()
    //软件下载地址
    var appurl = ""
    //当前版本
    var versionX = ""
    //是否强制升级 //1强制升级 2不强制 3无需升级
    var isforce = ""
    var isAppstore = false //true 是生产环境 false 测试版/企业版
    func save(){
    NSUserDefaults.standardUserDefaults().setValue(appurl, forKey: "APPURL")
    NSUserDefaults.standardUserDefaults().setValue(version, forKey: "VERSION")
    NSUserDefaults.standardUserDefaults().setValue(isforce, forKey: "FORCE")
    NSUserDefaults.standardUserDefaults().setValue(isforce, forKey: "AppSTROE")
    }

    static func getCurrent() -> VersionX{
        if let value = NSUserDefaults.standardUserDefaults().stringForKey("APPURL") {
            current.appurl = value
        }else{
            current.appurl = ""
        }
        
        
        if let value = NSUserDefaults.standardUserDefaults().stringForKey("VERSION") {
            current.versionX = value
        }else{
            current.versionX = "0.0.1"
        }
      
        if let value = NSUserDefaults.standardUserDefaults().stringForKey("FORCE") {
            current.isforce = value
        }else{
            current.isforce = ""
        }
        
        current.isAppstore =   NSUserDefaults.standardUserDefaults().boolForKey("AppSTROE")
    
        return current
    }
    

    }
    </pre>

    该类的使用就简单来。企业版项目要求从服务器对比版本提示更新
    <pre>
    func goversion(){

        //检查版本更新
        if VersionX.current.isAppstore == false{
        NSUserDefaults.standardUserDefaults().setBool(true, forKey: "SETINGUPFATE")
        let  appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate
         appdelegate.upDataVisions()
        }
    
    }
    

    </pre>

    代理中的代码
    <pre>
    func upDataVisions(){
    // 2 ios 1 andorid
    //现在的版本号
    var newVer = VersionX.current.versionX as String
    if newVer == ""{
    let newVer = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String

        }
        let   URL =  Const.URL_UPDATA + "?appver=" + newVer + "&osType=2"
        
        Http.manager().GET(URL , parameters : nil,
            success: { (req:AFHTTPRequestOperation!, ret:AnyObject!) -> Void in
                
                    let tmpdata = ret["data"] as! [String : AnyObject]
                    
                    if let value = tmpdata["apkurl"] as? String {
                         VersionX.current.appurl = value
                    }
                
                   if let value = tmpdata["isforce"] as? String {
                       VersionX.current.isforce = value
                    }
    
           let FORCE = String (tmpdata["isforce"] as! NSNumber)
                //1强制升级  0不强制   3无需升级
               if (FORCE == "1") {
                if let value = tmpdata["ver"]  {
                   //对比版本是否需要升级
                    let  value = value.stringByReplacingOccurrencesOfString(".", withString: "")
                    let  newVer = newVer.stringByReplacingOccurrencesOfString(".", withString: "")
                    if  Int(newVer)   < Int(value) {
                        let alert = UIAlertView(title: "提示", message: "有新的版本可以升级现在,是否立刻升级?", delegate: self, cancelButtonTitle: nil, otherButtonTitles: "是")
                        alert.tag = 300
                        alert.show()
                    }  else  {
                       let alert = UIAlertView(title: "提示", message: "已是最新版本", delegate: nil, cancelButtonTitle:nil, otherButtonTitles: "是")
                       alert.show()
                    }
                }
                if let value = tmpdata["ver"] as? String {
                    VersionX.current.versionX = value
                }
                }else if (FORCE == "0"){
                
                    if let value = tmpdata["ver"] {
                        
                        //对比版本是否需要升级
                        let  value = value.stringByReplacingOccurrencesOfString(".", withString: "")
                        
                       let  newVer = newVer.stringByReplacingOccurrencesOfString(".", withString: "")
                        
                        if  Int(newVer)   < Int(value) {
                        
                            let alert = UIAlertView(title: "提示", message: "有新的版本可以升级现在,是否立刻升级?", delegate: self, cancelButtonTitle: "否", otherButtonTitles: "是")
                            alert.tag = 200
                            alert.show()
                           
                       }  else  {
                          let alert = UIAlertView(title: "提示", message: "已是最新版本", delegate: nil, cancelButtonTitle:nil, otherButtonTitles: "是")
                            alert.show()
                       }
                    }
                    if let value = tmpdata["ver"] as? String {
                        VersionX.current.versionX = value
                    }
                }else {
                   let tempversion = NSUserDefaults.standardUserDefaults().boolForKey("SETINGUPFATE")
                   if  tempversion == true {
                    NSUserDefaults.standardUserDefaults().setBool(false, forKey: "SETINGUPFATE")
                    let alert = UIAlertView(title: "提示", message: "已是最新版本", delegate: nil, cancelButtonTitle:nil, otherButtonTitles: "是")
                    alert.show()
                   }
                }
                //保存信息
                let   ver = VersionX()
                ver.appurl = tmpdata["apkurl"] as! String
                ver.versionX = tmpdata["ver"] as! String
                ver.isforce = String(tmpdata["isforce"] as! NSNumber)
                ver.save()         
    }, failure: { (req:AFHTTPRequestOperation!, err:NSError!) -> Void in
                Toast.show("获取信息失败", ti: 1)
        })
    }
    

    </pre>

    我们项目时企业版可以跳到safri去更新。如果是商店版时隐藏更新。
    <pre>
    //检查更新功能是否需要隐藏
    if VersionX.current.isAppstore == false{
    upDataVisions()
    }
    </pre>

    相关文章

      网友评论

        本文标题:iOS 检查更新升级版 版本信息类(swift)的

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