iOS | Appstore已上架项目的应用内更新

要求

  • Xcode8.3+
  • Swift3.2
  • iOS8.0+

上架

Apple ID

当你的应用成功在Appstore上架后,通过https://itunesconnect.apple.com登录,然后在我的App里找到你的项目,选择已上架的版本,然后拉到最下面,选择在App信息里查看Apple ID

在 App Store 中查看

也可以点击在 App Store 中查看查看web端的地址,注意要将url中的us换成cn,不然地址访问错误(us表示美国Appstore地址,得换成cn中国的)。

从Appstore获取版本信息

以上工作完成后,在代码中,调用http://itunes.apple.com/cn/lookup?id=xxx即可获取到你的项目的相关信息。

信息收起
信息展开

我们主要用到的数据有versiontrackViewUrl,当然也可以展示更新日志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这个应用的
所以如图所示错误

如果对你有帮助,别忘了点个赞哦~

你可能感兴趣的:(iOS | Appstore已上架项目的应用内更新)