美文网首页iOS-swiftiOS点点滴滴iOS开发笔记
iOS | Appstore已上架项目的应用内更新

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

作者: 清無 | 来源:发表于2018-03-08 11:10 被阅读146次

    要求

    • 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已上架项目的应用内更新

        本文链接:https://www.haomeiwen.com/subject/dtiefftx.html