由于iOS审核的要求,不能出现有关”版本更新”的字眼,一旦出现就会被拒,这样就悲剧了。但是不是说这个功能我们就不能做了,可以让后台写一个接口,根据后台返回的一个值作为条件判断,在审核期间,不执行检查版本,不提示用户更新;审核通过后让后台返回的值改变检查版本,如果有新版本提示用户到appstore下载更新。以下是实现代码:
//MARK:-版本更新
func updateVersion() {
let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
dispatch_async(queue, { () -> Void in
var versionStr = ""
do {
versionStr = try String.init(contentsOfURL: NSURL(string: RequestURL.UPDATE_VERSION)!, encoding: NSUTF8StringEncoding)
} catch let error as NSError{
print(error)
}
let versionData = versionStr.dataUsingEncoding(NSUTF8StringEncoding)
var versionDict = NSDictionary()
do {
versionDict = try NSJSONSerialization.JSONObjectWithData(versionData!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
} catch let error as NSError {
print(error)
}
if versionDict.allKeys.count == 0{
return
}
let versionArr = versionDict.objectForKey("results") as! NSArray
let dict = versionArr[0] as! NSDictionary
let version = dict.objectForKey("version") as! String
//获得当前app版本号
let currentVersion = SystemUtils.getAppVersion()
dispatch_async(dispatch_get_main_queue(), {
if version != currentVersion{
//版本号不相等,提示更新,执行更新方法 self.checkUpdateVersionAlert(version)
}
})
})
}
//信息提示
func checkUpdateVersionAlert(version:String){
let message = "克穷司机V" + version + "版本发布了,赶快更新吧~"
let optionMenu = UIAlertController(title: "有新版本啦", message: message, preferredStyle: .Alert)
let callActionHandler = { (action:UIAlertAction!) -> Void in
SystemUtils.evaluateApp()//跳转到appstore(这是自己封装的方法)
}
let callAction = UIAlertAction(title: "现在升级", style: .Default, handler: callActionHandler)
optionMenu.addAction(callAction)
let cancelAction = UIAlertAction(title: "取消", style: .Cancel, handler: nil)
optionMenu.addAction(cancelAction)
self.presentViewController(optionMenu, animated: true, completion: nil)
}
以上是实现的核心代码,这里就不放最终效果图了。