Flutter开发中如何检测iOS设备的精确定位权限状态
iOS 14+ 精确定位权限检测方法
iOS 14及以上版本的系统新增了精确定位控制开关,设置页面展示效果如下:
你可以通过CoreLocation框架提供的属性直接检测应用是否已获取精确定位权限,具体操作如下:
前置依赖
- 导入CoreLocation框架,实例化
CLLocationManager对象 - 提前确认应用已获取基础定位权限(仅当应用获得「使用App期间允许」或「始终允许」定位权限时,精度检测才有意义)
检测代码实现
Swift 代码
import CoreLocation func hasPreciseLocationPermission() -> Bool { let locationManager = CLLocationManager() if #available(iOS 14.0, *) { return locationManager.accuracyAuthorization == .fullAccuracy } else { // iOS14以下无精确定位开关,默认拥有精确定位权限 return true } }
Objective-C 代码
#import <CoreLocation/CoreLocation.h> - (BOOL)hasPreciseLocationPermission { CLLocationManager *locationManager = [[CLLocationManager alloc] init]; if (@available(iOS 14.0, *)) { return locationManager.accuracyAuthorization == CLAccuracyAuthorizationFullAccuracy; } else { // iOS14以下无精确定位开关,默认拥有精确定位权限 return YES; } }
补充说明
如果检测结果为未获取精确定位权限,你可以调用requestTemporaryFullAccuracyAuthorizationWithPurposeKey:completion:方法向用户申请临时精确定位权限,满足单次场景的高精度定位需求。
内容的提问来源于stack exchange,提问作者iDecode
相关产品推荐
相关产品推荐

