iTunes API を使用して、一意のアプリbundleIdに基づいて情報を検索する方法はありますか?私はiPhoneアプリを持っています。APIを使用して、ユーザーが最新バージョンを持っているかどうかを確認したいと思います。検索を使用して、そのあいまいさを解決します(多くの結果を返すことができます)。 bundleIdを探すために結果セットを繰り返し処理する必要はありません。
デバイス側でこれを行う方法を探していません(Objective Cではありません)。 AppleがAPIを変更するとき/場合に非表示にするサーバー側のコードをサーバー上に作成したいと思います。
AppleはAPIを変更し、URLから言語コードを削除したので、探しているアプリのbundleId
のみを使用してください。例えば:
さらに、国パラメーターをクエリに追加して、特定の国のApp Storeの結果を取得できます。
例えば:
http://iTunes.Apple.com/lookup?bundleId=com.Yelp.yelpiphone&country=de
説明、ユーザー評価、その他のフィールドは、App Storeの国によって異なる場合があります。
アプリごとに一意であるため、バンドルIDの代わりに「Apple ID」を使用できることがわかりました。 「Apple ID」は http://iTunes.Apple.com/lookup サービスの「trackId」にマップされます。
Search APIでバンドルIDを使用できます。次のように、id
をbundleId
に置き換えるだけです。
http://iTunes.Apple.com/lookup?bundleId=com.facebook.Facebook
編集:@Roman Blachmanが述べたように、国コードのロジックが変更されました。結果を特定の国に限定する場合は、次の例を使用してください。
http://iTunes.Apple.com/lookup?bundleId=com.facebook.Facebook&country=us
ライブラリ iVersion を使用して、ユーザーがアプリ内からアプリの最新バージョンを持っているかどうかを確認できます。
iVersion
アプリケーション内からMac/iPhone App Storeアプリの更新を動的にチェックし、新しいリリースについてユーザーに通知するためのライブラリ。アップグレード後に初めて起動したときに、アプリの新機能についてユーザーに通知することもできます。
上記のすべての回答に感謝します。ここにSwift 4.2のコードがあります
guard let info = Bundle.main.infoDictionary,
let identifier = info["CFBundleIdentifier"] as? String,
let url = URL(string: "http://iTunes.Apple.com/lookup?bundleId=\(identifier)") else { return }
do {
let data = try Data(contentsOf: url)
guard let json = try JSONSerialization.jsonObject(with: data, options: [.allowFragments]) as? [String: Any] else {
return
}
if let result = (json["results"] as? [Any])?.first as? [String: Any],
let version = result["version"] as? String {
print("version in app store", version)
}
} catch let erro as NSError {
print(erro.description)
}