写在前面
在使用"itunes.apple.com/lookup?bund... 请求苹果商店的App信息时,获取到的版本号(version)是以前的版本号,单独使用这个地址从网页中获取到的数据是正确的,但是在项目中使用代码获取到的版本号就落后了一个版本。
上代码
以下是我的请求App信息的代码,此代码请求的数据不是实时的,版本号落后了一个版本,其它信息是正确的:
Swift
public class func versionAndDownloadUrl() -> (version: String, downloadUrl: String)? {
guard let identifier = Bundle.main.object(forInfoDictionaryKey: "CFBundleIdentifier") as? String,
let url = URL(string: "http://itunes.apple.com/lookup?bundleId=\(identifier)")
else {
return nil
}
guard let data = try? Data(contentsOf: url),
let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String: Any],
let results = json["results"] as? [[String: Any]],
results.count > 0,
let version = results[0]["version"] as? String,
let downLoadUrl = results[0]["trackViewUrl"] as? String
else {
return nil
}
return (version, downLoadUrl)
}
需要把此处的请求地址加上时间戳才能获取到正确的App信息
正确的请求URL地址
swift
let url = URL(string: "http://itunes.apple.com/lookup?bundleId=\(identifier)&date=\(Date.init().timeIntervalSince1970)")
替换上面代码里面的URL地址即可请求到最新的App信息。
资料来自:https://forums.developer.apple.com/forums/thread/125461
在URL地址中加入时间戳可能不是最好的解决方法,但确实能解决该问题,如果你有更好的解决方法,请不吝赐教!