前言
- 我的Flutter项目有保存图片功能,需要用到相册的访问权限,在IOS那边搞了半个下午的权限配置还是获取不到权限,记录下解决方式。本文所用权限依赖插件:permission_handler,版本8.1.6
- 我仔细排查,网上各种搜索,info.plist配置确定是没有问题的,就很谜。Podfile也参照一些文章配置了也一样不生效(后来才发现有坑)??之后卸载了,重新Build也还是一样。并且在系统设置里也找不到自己的APP(你可以看到设置里是有其他APP可以配置权限的)。
- 之后查看了下permission_handler官方的配置说明,点开了这个东西:
好家伙,权限的配置说明原来在这,之前都没发现(才不是因为都是英文不想看)
配置方式
打开./ios/Runner/info.plist文件,在
标签里插入权限标签,(插入自己需要的权限即可不用全部)全部权限例如: ... <dict> <key>NSPhotoLibraryUsageDescription</key> <string>App需要您的同意,才能访问相册</string> <key>NSLocationWhenInUseUsageDescription</key> <string>App需要您的同意,才能在使用期间访问位置</string> <key>NSLocationAlwaysUsageDescription</key> <string>App需要您的同意,才能始终访问位置</string> <key>NSCameraUsageDescription</key> <string>App需要您的同意,才能访问相机</string> <key>NSMicrophoneUsageDescription</key> <string>App需要您的同意,才能访问麦克风</string> <key>NSLocationUsageDescription</key> <string>App需要您的同意,才能访问位置</string> <key>NSCalendarsUsageDescription</key> <string>App需要您的同意,才能访问日历</string> <key>NSRemindersUsageDescription</key> <string>App需要您的同意,才能访问提醒事项</string> <key>NSMotionUsageDescription</key> <string>App需要您的同意,才能访问运动与健身</string> <key>NSHealthUpdateUsageDescription</key> <string>App需要您的同意,才能访问健康更新 </string> <key>NSHealthShareUsageDescription</key> <string>App需要您的同意,才能访问健康分享</string> <key>NSBluetoothPeripheralUsageDescription</key> <string>App需要您的同意,才能访问蓝牙</string> <key>NSAppleMusicUsageDescription</key> <string>App需要您的同意,才能访问媒体资料库</string> ... </dict> ...
打开./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导致没生效,以后还是得留意官方的文档说明...
版权属于:月琳cc
本文链接:https://kerrinz.com/archives/188.html
作品采用《知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议》进行许可,转载请务必注明出处!
小弟 · 2022-05-11 20:32
感谢大哥
防水材料加盟 · 2022-03-09 09:31
感谢分享 赞一个