在调用requestWhenInUseAuthorization
的{{1}}方法时,如果用户已禁用位置服务,则iOS会显示一条警告:
打开位置服务以允许“您的应用名称”来确定您的 位置
此警报具有“设置”按钮和“取消”按钮,该按钮可将用户带到“设置”应用中的“位置服务”。
此警报很好,但是我遇到的问题是它最多只能显示2次。如果用户两次都单击“取消”,那么下次我致电CLLocationManager
时,将不会显示任何警报。
我想至少告诉用户这种情况下的问题,但我不知道如何检测到这种情况。
答案 0 :(得分:0)
您必须自己保存授权请求的数量。 最简单的方法是使用UserDefaults。像这样:
保存价值:
UserDefaults.standard.set(true, forKey: "DidRequestAuthorization")
加载值:
let didRequestAuthorization = UserDefaults.standard.bool(forKey: "DidRequestAuthorization")
然后,如果didRequestAuthorization
为true,则下次可以显示警告,警告用户取消请求。
答案 1 :(得分:0)
此警报很好,但是我遇到的问题是它最多只能显示2次。如果用户两次都单击“取消”,则下次我调用requestWhenInUseAuthorization时,不会显示任何警报。
如您所见,您不能依赖系统警报。但是您不必。您可以通过调用CLLocationManager类方法locationServicesEnabled
来判断用户是否已完全禁用核心位置。然后,您可以显示您自己的警报。