需要在我的App ios中实现强制更新功能

时间:2016-02-16 07:04:48

标签: ios app-store version

任何人都可以帮助我如何为强制更新我的iOS应用程序提供警示。如果AppStore上有新版本,在任何设备中有旧版本或不同版本,那么我想检查版本是否不同,然后用户从AppStore更新新版本。以及如何获取我的应用程序的应用程序信息。

1 个答案:

答案 0 :(得分:0)

您可以通过将现代应用程序的版本与 App Store 上的版本进行比较来开发该功能。

enum VersionError: Error {

    case invalidResponse, invalidBundleInfo

}

class AppStoreCheck {

    static func isUpdateAvailable(completion: @escaping (Bool?, Error?) -> Void) throws -> URLSessionDataTask {

        guard let info = Bundle.main.infoDictionary,

            let currentVersion = info["CFBundleShortVersionString"] as? String,

            let identifier = info["CFBundleIdentifier"] as? String,

            let url = URL(string: your appstore url) else {

                throw VersionError.invalidBundleInfo

        }

        let task = URLSession.shared.dataTask(with: url) { (data, response, error) in

            do {

                if let error = error { throw error }

                guard let data = data else { throw VersionError.invalidResponse }

                let json = try JSONSerialization.jsonObject(with: data, options: [.allowFragments]) as? [String: Any]

                guard let result = (json?["results"] as? [Any])?.first as? [String: Any], let version = result["version"] as? String else {

                    throw VersionError.invalidResponse

                }

                let verInt = NSString.init(string: version).intValue

                let currentVerInt = NSString.init(string: currentVersion).intValue

                completion(verInt > currentVerInt, nil) 

            } catch {

                completion(nil, error)

            }

        }

        task.resume()

        return task

    }

}

该类将您的应用版本与您的应用商店版本进行比较,并将其报告为布尔值。 您可以调用 AppStoreCheck.isUpdateAvailable 并通过 bool 值添加该函数。