首页 > 解决方案 > 如何检测用户何时拒绝启用位置服务超过 2 次?

问题描述

调用 的requestWhenInUseAuthorization方法时CLLocationManager,如果用户禁用了定位服务,iOS 会显示一条警报,内容为:

打开定位服务以允许“您的应用名称”确定您的位置

此警报有一个“设置”按钮,可将用户带到“设置”应用程序中的“定位服务”,还有一个“取消”按钮。

这个警报很棒,但我遇到的问题是它最多只能显示 2 次。如果用户两次单击 Cancel,则下次我调用 时requestWhenInUseAuthorization,不会显示任何警报。

我想至少告诉用户这种情况下的问题是什么,但我不知道如何检测这种情况。

标签: ios

解决方案


您必须自己保存授权请求的数量。最简单的方法是使用 UserDefaults。像这样:

保存价值:

UserDefaults.standard.set(true, forKey: "DidRequestAuthorization")

负载值:

let didRequestAuthorization = UserDefaults.standard.bool(forKey: "DidRequestAuthorization")

然后,如果didRequestAuthorization为真,您可以在下次显示警报,警告用户取消请求。


推荐阅读