【问题标题】:iTunes api, lookup by bundle ID?iTunes api,按捆绑ID查找?
【发布时间】:2012-02-08 23:49:41
【问题描述】:

有没有什么方法可以使用iTunes API根据唯一的app bundleId查找信息?我有一个 iphone 应用程序,我想使用 API 检查用户是否拥有最新版本。使用搜索很糟糕,因为它很模糊(可以返回很多结果)。我宁愿不必遍历结果集来寻找我的 bundleId..

我不是在寻找在设备端执行此操作的方法(不是目标 c)。我想在我的服务器上制作服务器端代码,当/如果苹果更改 API 时隐藏。

【问题讨论】:

    标签: iphone ios mobile itunes


    【解决方案1】:

    Apple 更改了他们的 API,并从 URL 中删除了语言代码,因此您应该只为您正在寻找的应用程序添加 bundleId。 例如:

    http://itunes.apple.com/lookup?bundleId=com.yelp.yelpiphone

    此外,您可以将 country 参数添加到查询中,以获取特定国家/地区 App Store 的结果。

    例如:

    http://itunes.apple.com/lookup?bundleId=com.yelp.yelpiphone&country=de

    不同的 App Store 国家/地区之间的描述、用户评分和其他字段可能会有所不同。

    【讨论】:

    • 即使您不必指定国家代码作为参数,但我认为搜索不会搜索所有国家代码..例如查看itunes.apple.com/lookup?bundleId=uk.musicMagpieitunes.apple.com/lookup?bundleId=uk.musicMagpie&country=gb 之间的区别跨度>
    • 这正是我想要的!
    • 不幸的是,'bundleId' 参数不区分大小写,因此在开发人员选择的情况下,它无法区分媒体类型软件(即 iOS 应用程序)和 mac 软件(mac 应用程序商店应用程序)为他们的 iOS 和 Mac 应用程序使用相同的捆绑包 ID,但大小写不同。例如iOS 应用程序 com.palasoftware.MathBoard 和 Mac 应用程序 com.palasoftware.mathboard。此外,添加任何其他参数来指定媒体类型或实体类型对此问题没有影响。
    【解决方案2】:

    事实证明,您可以使用“Apple ID”而不是捆绑 ID,因为它在每个应用程序中也是唯一的。 'Apple ID' 映射到 http://itunes.apple.com/lookup 服务中的 'trackId'。

    【讨论】:

      【解决方案3】:

      您可以将捆绑 ID 与 Search API 一起使用。只需将id 替换为bundleId,如下所示:

      http://itunes.apple.com/lookup?bundleId=com.facebook.Facebook

      编辑: 正如@Roman Blachman 所说,国家代码逻辑已经改变。如果您想将结果限制在特定国家/地区,请使用以下示例。

      http://itunes.apple.com/lookup?bundleId=com.facebook.Facebook&country=us

      【讨论】:

      • 知道这个服务是什么时候发布的吗?顺便谢谢。
      • 不客气。不知道这个功能是什么时候引入的。
      • 我想知道为什么这会给我带来错误。这是另一个替代查询 - itunes.apple.com/lookup?id=<app-id>
      • 大约在昨天,我们所有的请求都要求查找国家/地区有效。
      【解决方案4】:

      您可以使用库iVersion 来查看用户是否在应用程序中拥有最新版本的应用程序。

      iVersion

      动态检查 Mac/iPhone App Store 更新的库 应用程序内的应用程序并通知用户有关新的 发布。还可以在第一时间通知用户应用程序中的新功能 升级后启动的时间。

      https://github.com/nicklockwood/iVersion

      【讨论】:

      • 对不起,我应该说我想要一些方法来做服务器端(不是目标 c)。我想在我的服务器上制作服务器端代码,当/如果苹果进行 API 更改时隐藏。我也会更新我的问题。结果他确实有一些服务器端代码(github.com/nicklockwood/iVersion/blob/master/Web%20Service/…),但是他迭代了一个结果数组。所以一定不能通过捆绑 ID 进行查找
      • 您是否正在寻找一种方法来判断 Apple 何时从 5.0 升级到 5.1?
      • 不。假设我在市场上有 10 个应用程序。所有应用程序目前都是 v 1.0。我为 App 1 发布了 2.0 版本,其他应用程序仍然是 1.0。我希望能够利用 Web 服务来查找商店中存在的最新版本的 App 1,以便通知用户进行升级。我不是 iOS 开发人员,事实证明我可以只使用 Apple id(在 iTunes 查找 api 中也称为“trackId”)。下面全部回答q。
      • iVersion 可以通过直接从设备访问 Apple 服务来工作,或者您可以将其指向您自己的 Web 服务并在服务器端进行查找。您可以查看源代码以了解它在做什么,它基本上是对 itunes.apple.com/lookup 服务进行查询,该服务返回 JSON 数据。
      【解决方案5】:

      感谢以上所有答案。这是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)
          }
      

      【讨论】:

        猜你喜欢
        • 2016-06-16
        • 1970-01-01
        • 2018-06-17
        • 1970-01-01
        • 1970-01-01
        • 2017-12-12
        • 2014-12-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多