今回は、Swift で App Store で公開しているアプリのバージョンを取得する方法についてです。
なお、以前には「【JavaScript】App Storeに公開済みのアプリのバージョンを取得する方法」と言う記事で、同様のことを JavaScript で行う方法を紹介しました。
今回参考にさせていただいた記事はこちら。
ios – Check if my app has a new version on AppStore – Stack Overflow
https://stackoverflow.com/questions/6256748/check-if-my-app-has-a-new-version-on-appstore
Objective-C での書き方もありますが、それより下に書かれていた Swift での書き方を参考にさせていただきました。
サンプルコードは下記の通りです。
func appVersionCheck() {
guard let info = Bundle.main.infoDictionary,
let appVersion = info["CFBundleShortVersionString"] as? String,
let identifier = info["CFBundleIdentifier"] as? String,
let url = URL(string: "https://itunes.apple.com/lookup?bundleId=\(identifier)") else { return }
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let data = data else { return }
do {
let json = try JSONSerialization.jsonObject(with: data, options: [.allowFragments]) as? [String: Any]
guard let result = (json?["results"] as? [Any])?.first as? [String: Any],
let storeVersion = result["version"] as? String else { return }
if appVersion != storeVersion {
// appVersion と storeVersion が異なっている時に実行したい処理を記述
}
} catch let error {
print(error)
}
}
task.resume()
}
上記コードでは、端末にインストールされているアプリのバージョンを取得後、App Store から公開済みアプリのバージョンを取得し、それらを比較すると言う処理を行なっています。
14行目で端末のアプリバージョンと App Store のアプリバージョンを比較し、異なっている場合は任意の処理を実行するようにしています。
例えば、アラートを表示し、App Store に誘導するのが一般的だと思います。
実際に上記コードを追加し実行したところ、問題なく各アプリバージョンが取得できました!
以上、Swift で App Store で公開しているアプリのバージョンを取得する方法についてでした。
ご参考になれば幸いです。