ios - 如何检测用户何时拒绝启用位置服务超过 2 次?
问题描述
调用 的requestWhenInUseAuthorization
方法时CLLocationManager
,如果用户禁用了定位服务,iOS 会显示一条警报,内容为:
打开定位服务以允许“您的应用名称”确定您的位置
此警报有一个“设置”按钮,可将用户带到“设置”应用程序中的“定位服务”,还有一个“取消”按钮。
这个警报很棒,但我遇到的问题是它最多只能显示 2 次。如果用户两次单击 Cancel,则下次我调用 时requestWhenInUseAuthorization
,不会显示任何警报。
我想至少告诉用户这种情况下的问题是什么,但我不知道如何检测这种情况。
解决方案
您必须自己保存授权请求的数量。最简单的方法是使用 UserDefaults。像这样:
保存价值:
UserDefaults.standard.set(true, forKey: "DidRequestAuthorization")
负载值:
let didRequestAuthorization = UserDefaults.standard.bool(forKey: "DidRequestAuthorization")
然后,如果didRequestAuthorization
为真,您可以在下次显示警报,警告用户取消请求。
推荐阅读
- python - AWS s3 尝试修复错误 s3.meta.client.head_bucket(Bucket=bucket_name)
- r - 有没有一种简洁的方式来从成对的列中相互填充 NA 值?
- python - 关于使用 python 预测股票价格的 LSTM 的问题
- android - 收到意图后警报应用程序崩溃(在 OnReceive() 中)
- javascript - Javascript按调用方法返回的值对对象数组进行排序
- python - 如何使用 pytorch 在 GPU 上并行运行线性回归
- html - 要在全屏 iframe 标记之外打开的弹出 html
- reactjs - React / React-DOM 包依赖冲突
- ios - 在 iOS 的颤振应用程序中选择图像时出错
- javascript - React useState 设置来自数据库的响应但是当我尝试访问 data[0].listing_reviews 它返回一个未定义的错误