web-dev-qa-db-fra.com

API iTunes, recherche par ID de bundle?

Existe-t-il un moyen d'utiliser API iTunes pour rechercher des informations sur la base de l'application unique bundleId? J'ai une application iphone, je veux utiliser l'API pour vérifier si l'utilisateur a la dernière version. Utiliser la recherche est nul, car son flou (peut renvoyer beaucoup de résultats). Je préfère ne pas avoir à répéter l'ensemble de résultats à la recherche de mon bundleId ..

Je ne cherche pas un moyen de le faire du côté de l'appareil (pas l'objectif C). Je voudrais faire du code côté serveur sur mon serveur qui se cache lorsque/if Apple fait un changement d'API.

23
rynop

Apple a changé son API et supprimé le code de langue de l'URL, vous ne devez donc que le bundleId pour l'application que vous recherchez. Par exemple:

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

De plus, vous pouvez ajouter le paramètre country à la requête, pour obtenir des résultats pour l'App Store d'un pays spécifique.

Par exemple:

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

La description, la note des utilisateurs et d'autres champs peuvent changer entre les différents pays de l'App Store.

50
Roman Blachman

Il s'avère que vous pouvez utiliser l'ID Apple au lieu de l'ID de bundle car il est également unique par application. Le "Apple ID" correspond à "trackId" dans le service http://iTunes.Apple.com/lookup .

8
rynop

Vous pouvez utiliser un ID de bundle avec API de recherche . Remplacez simplement id par bundleId, comme suit:

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

EDIT: Comme l'a déclaré @Roman Blachman, la logique du code pays a changé. Si vous souhaitez limiter vos résultats à un pays spécifique, utilisez l'exemple suivant.

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

6
Adam

Vous pouvez utiliser la bibliothèque iVersion pour voir si l'utilisateur dispose de la dernière version de l'application depuis l'application.

iVersion

Bibliothèque pour vérifier dynamiquement les mises à jour des applications Mac/iPhone App Store à partir de l'application et informer les utilisateurs de la nouvelle version. Peut également informer les utilisateurs des nouvelles fonctionnalités de l'application lors du premier lancement après une mise à niveau.

https://github.com/nicklockwood/iVersion

3
Scott Bossak

Merci à toutes les réponses ci-dessus. Voici le code en 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