Kerrinz的魔导书 - 权限
type: channel
link: https://www.kerrinz.com/tag/%E6%9D%83%E9%99%90/
items: Flutter IOS权限配置无效，info.plist不生效的问题

Flutter IOS权限配置无效，info.plist不生效的问题
type: item
date: 2021-11-14T12:38:00+00:00
description: 前言我的Flutter项目有保存图片功能，需要用到相册的访问权限，在IOS那边搞了半个下午的权限配置还是获取不到权限，记录下解决方式。本文所用权限依赖插件：permission_handler，版本8.1.6我仔细排查，网上各种搜索，info.plist配置确定是没有问题的，就很谜。Podfile也参照一些文章配置了也一样不生效（后来才发现有坑）？？之后卸载了，重新Build也还是一样。并且在系统设置里也找不到自己的APP（你可以看到设置里是有其他APP可以配置权限的）。之后查看了下permission_handler官方的配置说明，点开了这个东西：好家伙，权限的配置说明原来在这，之前都没发现（才不是因为都是英文不想看）配置方式打开./ios/Runner/info.plist文件，在标签里插入权限标签，（插入自己需要的权限即可不用全部）全部权限例如：... NSPhotoLibraryUsageDescription App需要您的同意,才能访问相册 NSLocationWhenInUseUsageDescription App需要您的同意,才能在使用期间访问位置 NSLocationAlwaysUsageDescription App需要您的同意,才能始终访问位置 NSCameraUsageDescription App需要您的同意,才能访问相机 NSMicrophoneUsageDescription App需要您的同意,才能访问麦克风 NSLocationUsageDescription App需要您的同意,才能访问位置 NSCalendarsUsageDescription App需要您的同意,才能访问日历 NSRemindersUsageDescription App需要您的同意,才能访问提醒事项 NSMotionUsageDescription App需要您的同意,才能访问运动与健身 NSHealthUpdateUsageDescription App需要您的同意,才能访问健康更新 NSHealthShareUsageDescription App需要您的同意,才能访问健康分享 NSBluetoothPeripheralUsageDescription App需要您的同意,才能访问蓝牙 NSAppleMusicUsageDescription App需要您的同意,才能访问媒体资料库 ... ...打开./iosPodfile文件，找到post_install do |installer|那一行，像下面这样插入代码，或者干脆整个代码块替换掉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)', ## dart: PermissionGroup.photos 'PERMISSION_PHOTOS=1', # 相册权限，这里等于1是启用该权限，等于0是禁用该权限！ 'PERMISSION_CAMERA=1', # 相机权限 # ...其他权限参考官方文档里的IOS配置 end end end检查是否成功在系统设置里找自己的APP，找不到就是失败了；找到的话点进去，就会看到可以配置的权限，像我配置了相册权限就可以看到这个照片的选项。后话详细配置可以查看官方文档。之前看的那些文章都有点旧了，虽然有的给了Podfile的配置但是给权限赋值成了0导致没生效，以后还是得留意官方的文档说明...