You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:45:03