在我的 iOS 应用程序中,我启用了强制应用程序更新功能。是这样的。
如果有严重错误修复。在服务器中我们正在设置新的发行版本。在启动屏幕中,我正在检查当前的应用程序版本,如果它低于服务版本,则会显示一条更新应用程序的消息。
我放了2个按钮“立即更新”,“稍后更新”
我有2个问题
如果我现在点击。应用程序应该使用“更新”按钮在应用程序商店中打开我的应用程序。目前我使用链接“http://appstore.com/mycompanynamepvtltd” 这将打开我公司应用程序的列表,但它有“打开”按钮,而不是“更新”按钮,即使我的应用程序有新的更新。更新页面的网址是什么?
如果他单击“稍后更新”按钮,是否可以以编程方式关闭应用程序?这是否会导致我的应用程序在应用商店中被拒绝?
请帮我解答这两个问题
第 2 点:如果您不希望用户稍后更新,则应该仅允许强制更新作为选项。以编程方式关闭应用程序不是正确的选择。
第 1 点:您可以使用一个可用的良好库来实现此目的。
Swift 中的用法: 图书馆
func applicationDidBecomeActive(application: UIApplication) {
/* Perform daily (.daily) or weekly (.weekly) checks for new version of your app.
Useful if user returns to your app from the background after extended period of time.
Place in applicationDidBecomeActive(_:)*/
Siren.shared.checkVersion(checkType: .daily)
}
在 Objective-C 中的用法: 库
-(void)applicationDidBecomeActive:(UIApplication *)application {
// Perform daily check for new version of your app
[[Harpy sharedInstance] checkVersionDaily];
}
它是如何工作的:它使用查找 API 返回应用程序详细信息,例如 link(包括版本)并进行比较。
例如,通过调用 https://itunes.apple.com/lookup?id=284910350
通过 iTunes ID 查找 Yelp 软件应用程序欲了解更多信息,请访问链接
不要以编程方式关闭应用程序。 Apple 可以拒绝该应用程序。更好的方法是不允许用户使用该应用程序。保留更新按钮。用户要么去应用程序商店,要么自己关闭应用程序。
根据 Apple 的说法,您的应用程序不应自行终止。由于用户没有点击“主页”按钮,因此任何返回主屏幕都会给用户留下您的应用程序崩溃的印象。这是令人困惑的非标准行为,应该避免。
请查看此论坛:
https://forums.developer.apple.com/thread/52767。
很多人都在发生这种情况。在我的项目中,我将用户重定向到我们从应用程序商店下载应用程序的网站页面。这样,如果用户在应用商店中没有获得更新按钮,至少用户暂时可以在 safari 中使用该网站。
具体回答您的问题:
https://apps.apple.com/app/id##########
,其中 ##########
是您应用程序的 10 位数字 ID。您可以在 App Store Connect 的“应用程序信息”部分下找到该 ID。它被称为“Apple ID”。我发现评审过程至少有些主观,不同的审稿人可能会关注不同的事情,并拒绝以前多次被忽视的事情。
func appUpdateAvailable() -> (Bool,String?) {
guard let info = Bundle.main.infoDictionary,
let identifier = info["CFBundleIdentifier"] as? String else {
return (false,nil)
}
// let storeInfoURL: String = "http://itunes.apple.com/lookupbundleId=\(identifier)&country=IN"
let storeInfoURL:String = "https://itunes.apple.com/IN/lookup?bundleId=\(identifier)"
var upgradeAvailable = false
var versionAvailable = ""
// Get the main bundle of the app so that we can determine the app's version number
let bundle = Bundle.main
if let infoDictionary = bundle.infoDictionary {
// The URL for this app on the iTunes store uses the Apple ID for the This never changes, so it is a constant
let urlOnAppStore = NSURL(string: storeInfoURL)
if let dataInJSON = NSData(contentsOf: urlOnAppStore! as URL) {
// Try to deserialize the JSON that we got
if let dict: NSDictionary = try?
JSONSerialization.jsonObject(with: dataInJSON as Data, options: JSONSerialization.ReadingOptions.allowFragments) as! [String: AnyObject] as NSDictionary? {
if let results:NSArray = dict["results"] as? NSArray {
let versionDict = NSMutableDictionary(dictionary: results[0] as! [String:Any])
if let version = versionDict.object(forKey: "version") as? String {
// Get the version number of the current version installed on device
if let currentVersion = infoDictionary["CFBundleShortVersionString"] as? String {
// Check if they are the same. If not, an upgrade is available.
print("\(version)")
print("\(currentVersion)")
if version != currentVersion {
upgradeAvailable = true
versionAvailable = version
}
}
}
}
}
}
}
return (upgradeAvailable,versionAvailable)
}
func checkAppVersion(controller: UIViewController){
let appVersion = appUpdateAvailable()
if appVersion.0 {
alertController(controller: controller, title: "New Update", message: "New version \(appVersion.1 ?? "") is available")
}
}
func alertController(controller:UIViewController,title: String,message: String){
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "Update", style: .default, handler: { alert in
//itms-apps://itunes.apple.com/app/ewap/id1536714073
guard let url = URL(string: "https://apps.apple.com/us/app/cdoc-see-your-doctor-anytime/id1133534055") else { return }
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(url)
}
}))
DispatchQueue.main.async {
controller.present(alertController, animated: true)
}
}
使用appgrades.io。让您的应用程序专注于提供业务价值,让第三方解决方案发挥作用。借助应用程序等级,一旦集成了 SDK,您就可以创建自定义视图/警报以向旧版本用户显示,要求他们更新应用程序。您可以自定义限制视图/警报中的所有内容,使其显示为应用程序的一部分。
解决方案如下:
关于网址:
要直接在 AppStore 中打开应用程序,请使用完整的 URL。 URL 应该是这样的:
“itms-apps://itunes.apple.com/app/id
注意:App ID 将为您从 AppStore 获取的 10 位数字 ID。
关于更新
以下是一些意见:
如果您提供“稍后更新”选项,为什么要终止该应用程序?在这种情况下,终止应用程序没有任何意义。
更好的选择应该是使用单个选项“立即更新”。
关于应用程序拒绝,没有具体的是或否的答案。您的应用程序有可能被拒绝或不被拒绝,具体取决于审核者。也许,该应用程序现在会获得批准。但在未来的审查中总是有可能被拒绝。
希望,它能帮助您做出更好的决定。