技術ブログ

プログラミング、IT関連の記事中心

アプリバージョンの取得を行う方法(強制アップデート)【Swift】

■はじめに

アプリでよくある、最新版のアプリじゃないと、アップデートしてね〜

というようなダイアログを出す場合があります。

これは、最新アプリがあるのに、古いバージョンのアプリを利用されないようにするためには、非常にいい方法です。

ここでは、AppStoreのアプリのバージョンの取得方法を記載します。

■手順

URLのリクエストで、バージョン情報を取得するのですが、URLにはそのアプリのIDが必要になります。

これは、iTunes Connectで確認してください。(アプリが既にリリースされている必要があります。)

以下のURLの「[Apple ID]」の部分をそのIDに書き換えてください。

https://itunes.apple.com/lookup?id=[Apple ID]

以下がリクエストを行い、バージョン情報をコンソールに出力する処理です。

func checkAppVersion(vc: UIViewController, appId: String) {
    guard let url = URL(string: "https://itunes.apple.com/lookup?id=" + appId) else { return }
    var request = URLRequest(url: url)
    request.httpMethod = "GET"
    request.timeoutInterval = 120
    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data else {
            print("エラー")
            return
        }
        do {
            let json = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments)
            guard
                let jsonDict = json as? NSDictionary,
                let resultsArray = jsonDict["results"] as? NSArray,
                let result = resultsArray[0] as? NSDictionary,
                let version = result["version"] as? String,
                let nowAppVersion: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String
                else {
                    print("エラー")
                    return
            }
            
            if version != nowAppVersion {
                // TODO: ここでAppStoreを開く処理を記載するなど。
                print("バージョンが古い")
            }
        } catch {
            print("エラー")
        }
    }
    task.resume()
}