■はじめに
アプリでよくある、最新版のアプリじゃないと、アップデートしてね〜
というようなダイアログを出す場合があります。
これは、最新アプリがあるのに、古いバージョンのアプリを利用されないようにするためには、非常にいい方法です。
ここでは、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()
}