我正在开发一个IOS应用程序。我有一个用例,我们必须强制用户必须升级。例如,用户可能是版本1和另外两个版本2和3(当前存在于应用商店中)。现在我们确定版本1存在安全漏洞,因此我们打开警报,要求用户通过应用商店升级。我现在的方法如下: -
1. Implement a rest service which vends the minimum required version.
2. Implement a local upgrade handler that calls the rest service,
gets the current version(natively) and compares the version
against the min required version.
3. If the version is lower than min required version, upgrade by
opening app store.
到目前为止,我已经能够成功实现其余服务和部分升级处理程序。我的警报视图代码如下所示: -
private func alertUserWithHandler(title: String?, message: String, upgradeHandler: ((UIAlertAction) -> Void)? ){
let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: upgradeHandler))
self.presentViewController(alert, animated: true, completion: nil)
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
}
我的升级处理程序如下所示: -
// The upgrade handler takes the user to the AppStore.
func upgradeHandler(action:UIAlertAction) {
UIApplication.sharedApplication().openURL(NSURL(string:"location in appstore"))
}
这种方法的问题在于它不是阻塞处理程序。用户可能会按“确定”按钮然后转到应用程序商店,然后返回以继续使用该应用程序。我们想强制升级(即用户在升级成功完成之前无法使用该应用程序)。
有人能建议强制用户升级的好方法吗?
答案 0 :(得分:1)
我在Singleton类中创建了一个sharedInstance(),它使用version和build作为参数来访问Web服务。如果它回来了,我会在应用程序上以模态方式呈现一个视图,在该Web服务返回false之前无法解除。通过将它放入sharedInstance我不必在每个视图控制器上调用它。当应用程序最初启动时,我也会调用它一次。