要求
- Xcode8.3+
- Swift3.2
- iOS8.0+
上架
Apple ID当你的应用成功在Appstore上架后,通过https://itunesconnect.apple.com登录,然后在我的App
里找到你的项目,选择已上架的版本,然后拉到最下面,选择在App信息
里查看Apple ID
。
也可以点击在 App Store 中查看
查看web端的地址,注意要将url中的us
换成cn
,不然地址访问错误(us表示美国Appstore地址,得换成cn中国的)。
从Appstore获取版本信息
以上工作完成后,在代码中,调用http://itunes.apple.com/cn/lookup?id=xxx
即可获取到你的项目的相关信息。
我们主要用到的数据有version
、trackViewUrl
,当然也可以展示更新日志releaseNotes
。
具体实现
AppDelegate.swift
- 扩展
extension UIApplication{
var shortVersion: String{
return Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? ""
}
}
- 调用
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
versionCheck()
return true
}
- 实现
fileprivate func versionCheck(){
let appstoreID = "xxx" //替换成上面查到的ID
typealias JSONDictionary = [String: Any]
let application = UIApplication.shared
let url = URL(string: "http://itunes.apple.com/cn/lookup?id=\(appstoreID)")!
let task = URLSession.shared.dataTask(with: url) { (data, _, error) in
guard let data = data, error == nil else{
print(error!)
return
}
if let json = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? JSONDictionary{
let results = json?["results"] as? [JSONDictionary]
guard let dict = results?.first else{
return
}
let version = dict["version"] as? String ?? ""
guard version > application.shortVersion else{
return
}
let url = dict["trackViewUrl"] as? String ?? ""
let notes = dict["releaseNotes"] as? String ?? ""
DispatchQueue.main.async {
let alert = UIAlertController(title: "发现新版本\(version)", message: notes, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "去更新", style: .cancel, handler: {_ in
if let url = URL(string: url), application.canOpenURL(url){
application.open(url, options: [:], completionHandler: nil)
}
}))
alert.addAction(UIAlertAction(title: "取消", style: .default, handler: nil))
self.window?.rootViewController?.present(alert, animated: true, completion: nil)
}
}
}
task.resume()
}
-
效果
注意模拟器上是没有Appstore这个应用的
如果对你有帮助,别忘了点个赞哦~
网友评论