Flutter iOS 权限配置完整指南(定位权限)

一、核心配置(你需要的完整代码)

1. 找到配置文件

路径:ios/Podfile

2. 替换 / 添加这段代码

找到 post_install 代码块,替换成以下完整配置:

ruby

复制代码
post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    
    # 定位权限配置(你需要的核心代码)
    target.build_configurations.each do |config|
      # 仅使用时定位权限
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)']
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] << 'PERMISSION_LOCATION_WHEN_IN_USE=1'
      # 始终允许定位权限
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] << 'PERMISSION_LOCATION_ALWAYS=1'
    end
  end
end

二、必须补充的 iOS 权限声明(不配置会崩溃 / 被拒)

仅配置宏不够,必须在 Info.plist 添加权限描述文案,否则 App 无法请求定位、审核被拒。

1. 打开文件

路径:ios/Runner/Info.plist

2. 添加以下代码

xml

复制代码
<key>NSLocationWhenInUseUsageDescription</key>
<string>需要获取您的位置信息,用于展示当前位置、导航等功能</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>需要始终获取您的位置信息,用于后台定位、轨迹记录等功能</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>需要始终获取您的位置信息</string>

文案可以根据你的业务修改,不能为空


三、生效步骤

配置完成后,执行以下命令让配置生效:

  1. 进入 iOS 目录:cd ios
  2. 重新安装依赖:pod install
  3. 返回根目录:cd ..
  4. 重启 Flutter 项目

四、代码解释

  1. GCC_PREPROCESSOR_DEFINITIONS:iOS 编译预定义宏
  2. PERMISSION_LOCATION_WHEN_IN_USE=1:开启仅使用时定位权限
  3. PERMISSION_LOCATION_ALWAYS=1:开启始终定位权限
  4. ||= ['$(inherited)']关键修复 ------ 防止覆盖原有配置,避免编译报错

五、常见问题

1. 报错:Undefined symbol

原因:缺少 ||= ['$(inherited)'],用我给的完整代码即可解决。

2. 权限请求不弹出

原因:未配置 Info.plist 权限文案,必须补充。

3. 只需要一种定位权限

  • 仅使用时:只保留 PERMISSION_LOCATION_WHEN_IN_USE=1
  • 始终允许:必须同时保留两个宏(iOS 系统要求)
相关推荐
2501_9151063229 分钟前
深入解析无源码iOS加固原理与方案,保护应用安全
android·安全·ios·小程序·uni-app·cocoa·iphone
Daniel_Coder2 小时前
iOS Widget 开发-15:Widget 性能优化指南
ios·swift·widget·widgetcenter
库奇噜啦呼4 小时前
【iOS】源码学习-dyld加载
学习·ios·cocoa
Daniel_Coder4 小时前
iOS Widget 开发-16:Widget 网络数据加载策略
ios·swift·widget·widgetcenter
美狐美颜SDK开放平台5 小时前
美颜SDK开发详解:如何优化美颜SDK在低端安卓机上的性能?
android·ios·音视频·直播美颜sdk·视频美颜sdk
Kurisu5755 小时前
FilzaCracked_4.0.0_TS.ipa2026最新官方正版免费下载 一键转存 永久更新 (看到速转存 资源随时走丢)手机版通用
ios·智能手机·电脑·巨魔
小蜜蜂嗡嗡17 小时前
flutter image_cropper截图控件布局顶到状态栏中问题
flutter
ACP广源盛1392462567318 小时前
iOS 27 开放 AI 生态@ACP#小型化扩展黄金风口,IX8008全面超越 ASM2806,铸就嵌入式 AI 扩展核心
人工智能·嵌入式硬件·macos·ios·计算机外设·objective-c·cocoa
人月神话Lee19 小时前
【图像处理】卷积原理与卷积核——图像处理的核心引擎
ios·ai编程·图像识别
用户2235862182021 小时前
如何在超大型的工程中使用 Claude Code?
前端·ios·claude