我們這里描述的不是svn 或者是git 的使用
本地建立一個版本管理類對于版本的更新和版本相關(guān)內(nèi)容的使用會變的很方便。也是 我們代碼大神話的必要之路 潘明。
當然現(xiàn)在商店版的項目不需要做檢查更新等功能(appstore有新版本會提示),有些項目還是會有版本更新功能的
廢話不多說直接上代碼怠晴。
<pre>
import UIKit
class VersionX: NSObject {
static let current = VersionX()
//軟件下載地址
var appurl = ""
//當前版本
var versionX = ""
//是否強制升級 //1強制升級 2不強制 3無需升級
var isforce = ""
var isAppstore = false //true 是生產(chǎn)環(huán)境 false 測試版/企業(yè)版
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>
該類的使用就簡單來熄诡。企業(yè)版項目要求從服務器對比版本提示更新
<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
//現(xiàn)在的版本號
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: "有新的版本可以升級現(xiàn)在,是否立刻升級鳄虱?", 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: "有新的版本可以升級現(xiàn)在弟塞,是否立刻升級?", 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>
我們項目時企業(yè)版可以跳到safri去更新拙已。如果是商店版時隱藏更新决记。
<pre>
//檢查更新功能是否需要隱藏
if VersionX.current.isAppstore == false{
upDataVisions()
}
</pre>