【发布时间】:2012-02-08 23:49:41
【问题描述】:
有没有什么方法可以使用iTunes API根据唯一的app bundleId查找信息?我有一个 iphone 应用程序,我想使用 API 检查用户是否拥有最新版本。使用搜索很糟糕,因为它很模糊(可以返回很多结果)。我宁愿不必遍历结果集来寻找我的 bundleId..
我不是在寻找在设备端执行此操作的方法(不是目标 c)。我想在我的服务器上制作服务器端代码,当/如果苹果更改 API 时隐藏。
【问题讨论】:
有没有什么方法可以使用iTunes API根据唯一的app bundleId查找信息?我有一个 iphone 应用程序,我想使用 API 检查用户是否拥有最新版本。使用搜索很糟糕,因为它很模糊(可以返回很多结果)。我宁愿不必遍历结果集来寻找我的 bundleId..
我不是在寻找在设备端执行此操作的方法(不是目标 c)。我想在我的服务器上制作服务器端代码,当/如果苹果更改 API 时隐藏。
【问题讨论】:
Apple 更改了他们的 API,并从 URL 中删除了语言代码,因此您应该只为您正在寻找的应用程序添加 bundleId。
例如:
此外,您可以将 country 参数添加到查询中,以获取特定国家/地区 App Store 的结果。
例如:
http://itunes.apple.com/lookup?bundleId=com.yelp.yelpiphone&country=de
不同的 App Store 国家/地区之间的描述、用户评分和其他字段可能会有所不同。
【讨论】:
事实证明,您可以使用“Apple ID”而不是捆绑 ID,因为它在每个应用程序中也是唯一的。 'Apple ID' 映射到 http://itunes.apple.com/lookup 服务中的 'trackId'。
【讨论】:
您可以将捆绑 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
【讨论】:
您可以使用库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)
}
【讨论】: