我们可以使用iTunes的接口,来实现新版本提醒功能。
http://itunes.apple.com/lookup?id=xxxxxxxx
这里,我们使用Alamofire+SwiftyJSON来请求,并将封装成一个方法。代码如下:
import Alamofire
import SwiftyJSON
class VersionChecker {
func checkUpdateForAppID(ID: String, newVersionHandler: (thisVerion: String, newVersion: String) -> Void) {
Alamofire.request(.GET, "http://itunes.apple.com/lookup?id=\(ID)").responseJSON {
guard
let value = $0.result.value,
let json = Optional(JSON(value)),
let version = json["results"].arrayValue.first?["version"].string,
let versionInt = Int(version.stringByReplacingOccurrencesOfString(".", withString: "")),
let thisVersion = (NSBundle.mainBundle().infoDictionary?["CFBundleShortVersionString"] as? String),
let thisVersionInt = Int(thisVersion.stringByReplacingOccurrencesOfString(".", withString: ""))
else {
NSLog("无法获取到App版本信息")
return
}
print(json)
if versionInt > thisVersionInt {
// 在下面的回调中可以做一些如弹窗等操作提示用户更新
newVersionHandler(thisVerion: thisVersion, newVersion: version)
} else {
NSLog("App已经是最新版本")
}
}
}
}
调用时只需要:
VersionChecker().checkUpdateForAppID(YourAppID) {
let title = "新版本提醒"
let message = "App Store中有新版本V\($1)(目前版本V\($0)),请前往更新。"
// 弹窗...
// 如果用户点击了“更新”,则跳去App Store
}
所以如果你手上的App是V1.2.0,而App Store上的版本是V1.3.0,就会有提示了。要注意的是,VersionChecker对象在调用后会马上被释放。如果你不想这样,你也可以把它写成一个类方法。
附:跳去App Store的代码
let AppID = "xxxxxxxxxxxx"
if let URL = NSURL(string: "https://itunes.apple.com/us/app/id\(AppID)?ls=1&mt=8") {
UIApplication.sharedApplication().openURL(URL)
}
希望对各位读者有用 :)