webdevqa.jp.net

iTunes API、バンドルIDによる検索?

iTunes API を使用して、一意のアプリbundleIdに基づいて情報を検索する方法はありますか?私はiPhoneアプリを持っています。APIを使用して、ユーザーが最新バージョンを持っているかどうかを確認したいと思います。検索を使用して、そのあいまいさを解決します(多くの結果を返すことができます)。 bundleIdを探すために結果セットを繰り返し処理する必要はありません。

デバイス側でこれを行う方法を探していません(Objective Cではありません)。 AppleがAPIを変更するとき/場合に非表示にするサーバー側のコードをサーバー上に作成したいと思います。

23
rynop

AppleはAPIを変更し、URLから言語コードを削除したので、探しているアプリのbundleIdのみを使用してください。例えば:

http://iTunes.Apple.com/lookup?bundleId=com.Yelp.yelpiphone

さらに、国パラメーターをクエリに追加して、特定の国のApp Storeの結果を取得できます。

例えば:

http://iTunes.Apple.com/lookup?bundleId=com.Yelp.yelpiphone&country=de

説明、ユーザー評価、その他のフィールドは、App Storeの国によって異なる場合があります。

50
Roman Blachman

アプリごとに一意であるため、バンドルIDの代わりに「Apple ID」を使用できることがわかりました。 「Apple ID」は http://iTunes.Apple.com/lookup サービスの「trackId」にマップされます。

8
rynop

Search APIでバンドルIDを使用できます。次のように、idbundleIdに置き換えるだけです。

http://iTunes.Apple.com/lookup?bundleId=com.facebook.Facebook

編集:@Roman Blachmanが述べたように、国コードのロジックが変更されました。結果を特定の国に限定する場合は、次の例を使用してください。

http://iTunes.Apple.com/lookup?bundleId=com.facebook.Facebook&country=us

6
Adam

ライブラリ iVersion を使用して、ユーザーがアプリ内からアプリの最新バージョンを持っているかどうかを確認できます。

iVersion

アプリケーション内からMac/iPhone App Storeアプリの更新を動的にチェックし、新しいリリースについてユーザーに通知するためのライブラリ。アップグレード後に初めて起動したときに、アプリの新機能についてユーザーに通知することもできます。

https://github.com/nicklockwood/iVersion

3
Scott Bossak

上記のすべての回答に感謝します。ここに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)
    }
0
Gurjinder Singh