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