func viewDidLoad()
{
DispatchQueue.global().async {
do {
let update = try self.isUpdateAvailable()
DispatchQueue.main.async {
if update{
self.popupUpdateDialogue();
//you can show a popup to notify the user
}
}
} catch {
print(error)
}
}
}
func isUpdateAvailable() throws -> Bool {
guard let info = Bundle.main.infoDictionary,
let currentVersion = info["CFBundleShortVersionString"] as? String,
let identifier = info["CFBundleIdentifier"] as? String,
let url = URL(string: "http://itunes.apple.com/lookup?bundleId=\(identifier)") else {
throw VersionError.invalidBundleInfo
}
let data = try Data(contentsOf: url)
guard let json = try JSONSerialization.jsonObject(with: data, options: [.allowFragments]) as? [String: Any] else {
throw VersionError.invalidResponse
}
if let result = (json["results"] as? [Any])?.first as? [String: Any], let version = result["version"] as? String {
appStoreVersion = version
return version != currentVersion
}
throw VersionError.invalidResponse
}
3条答案
按热度按时间toiithl61#
可以使用Harpy:当App Store上有新版本的应用时,此模块会触发UIAlertView。
Harpy现在已被废除。Siren是从Harpy移植而来的,因为Siren和Harpy是由同一个开发人员维护的。截至2018年12月,Harpy已被弃用,转而支持Siren。
lsmepo6l2#
http://itunes.apple.com/jp/lookup/?id=app_id
例如:
http://itunes.apple.com/jp/lookup/?id=1005582646
例如,对于美国应用程序:http://itunes.apple.com/lookup/?id=myAppIDNumberFromTheAppStore
请注意,这是独立于App Store Connect API的。如果您使用它,则需要在发出请求之前生成令牌。请首先查看API的文档,否则您将获得空结果的响应。
iTunes API的响应有一个
"version"
字段,该字段位于"results"
字段内。它具有App Store上最新版本的版本号。在
AppDelegate->didFinishLaunchingWithOptions
中,可以调用上述API。1.在用户设备上获取当前版本的方法:
目标C
Swift(4.2)
现在,您可以比较版本号1和2,以便在App Store上有更新的应用时向用户显示警报或通知。
juud5qan3#
你可以在这里找到解决方案。在你的home viewController中编写这个函数。