iOS 进阶文集iOS学习iOS程序猿

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

2016-11-23  本文已影响764人  super_chao

我们这里描述的不是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>

上一篇 下一篇

猜你喜欢

热点阅读