如何检测用户何时拒绝启用定位服务两次以上?

时间:2019-01-02 18:30:42

标签: ios

在调用requestWhenInUseAuthorization的{​​{1}}方法时,如果用户已禁用位置服务,则iOS会显示一条警告:

  

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

此警报具有“设置”按钮和“取消”按钮,该按钮可将用户带到“设置”应用中的“位置服务”。

此警报很好,但是我遇到的问题是它最多只能显示2次。如果用户两次都单击“取消”,那么下次我致电CLLocationManager时,将不会显示任何警报。

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

2 个答案:

答案 0 :(得分:0)

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

保存价值:

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

加载值:

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

然后,如果didRequestAuthorization为true,则下次可以显示警告,警告用户取消请求。

答案 1 :(得分:0)

  

此警报很好,但是我遇到的问题是它最多只能显示2次。如果用户两次都单击“取消”,则下次我调用requestWhenInUseAuthorization时,不会显示任何警报。

如您所见,您不能依赖系统警报。但是您不必。您可以通过调用CLLocationManager类方法locationServicesEnabled来判断用户是否已完全禁用核心位置。然后,您可以显示您自己的警报。