当用户拒绝启用我的应用所需的推送通知服务和位置服务时,我一直在谷歌搜索如何优雅处理。我发现Apple的人机界面指南禁止开发人员以编程方式退出应用程序并且应该留给用户。但我不希望用户在没有启用这些服务的情况下使用我的应用程序,因为它们是必需的。如何在不违反Apple规定的任何指导的情况下实现这一目标?
答案 0 :(得分:1)
好吧,我只会显示一个静态视图,解释为什么需要这些服务以及用户如何启用它们 - 最好通过提供一个重定向到设置的按钮(Swift 3代码):
// in Button handler code:
if let appSettings = URL(string: UIApplicationOpenSettingsURLString) {
UIApplication.shared.openURL(appSettings)
}
答案 1 :(得分:1)
许多应用都会实施"预请求"对话框,如果用户在预请求上接受请求,则显示实际的权限请求对话框,因为他们更可能接受。如果他们拒绝您的预请求对话框,请再次告诉他们您为什么需要权限或某些功能不会起作用并重试。我还没有听说过Apple在这种方法上遇到任何问题。
如果他们已经拒绝了权限请求,那么您需要提醒他们所需的权限尚未被授予以及哪些功能现已被禁用,提供一个对话框按钮以指导他们进行设置并显示如何启用权限。
要从您的应用中打开设置,请使用以下代码
Swift 3
UIApplication.shared.openURL(URL(string:UIApplicationOpenSettingsURLString)!)
Swift 2.x
UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)
<强> 目标C 强>
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]
<强> 更新 强>
刚刚意识到,如果用户没有启用所需的服务,您希望限制应用的功能。最好的方法是推送一个显示图像和/或标签的视图控制器,说明某些功能未启用,因此应用程序无法正常运行。您可以详细说明启用所需服务的步骤,并使用按钮将其指向上面的设置。再说一遍,我还没有看到苹果公司对此产生疑问,因为很多应用程序都会使用这种方法,例如GPS。