我最近对我的Flutter iOS应用程序做了一些重构,主要是将代码从main.dart中分离出来,并转移到单独的文件中。
在这次重构之后,应用程序突然停止要求用户允许使用相机或画廊,并且无法访问这些相应的资源。
我正在运行XCode 15和iOS 17
我尝试解决这个问题的步骤。
1.确保更新flutter包permission_handler(v11.0.1)
1.再次检查info.pblist是否包含正确的密钥:
<key>NSCameraUsageDescription</key>
<string>We need access to your camera for taking pictures.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>We need access to your photo library for selecting pictures.</string>
1.更新pod(1.13.0)
1.更新Homebrew(4.1.15)
1.更新Flutter及其工具:Flutter 3.13.6 · channel stable · https://github.com/flutter/flutter.git Framework · revision ead455963c(2 weeks ago)· 2023-09-26 18:28:17 -0700 Engine · revision a794cf2681 Tools · Dart 3.1.3 · DevTools 2.25.0
1.运行以下命令:
- Flutter 清洗
- 扑式酒吧
- rm -rf Pods/ Podfile.lock
- rm -rf /ios
- Flutter Build iOS
1.重新安装应用程序(多次)物理和模拟环境。
相关代码片段:
File? _image;
UploadState _uploadState = UploadState.idle;
Future<void> _checkPermissionsAndPickImage(
ImageSource source, BuildContext context) async {
Permission permission =
(source == ImageSource.camera) ? Permission.camera : Permission.photos;
PermissionStatus status = await permission.request();
if (status.isGranted) {
_pickImage(source);
} else if (status.isPermanentlyDenied) {
_showPermissionDeniedDialog(context);
} else {
print('Permission not granted. Cannot access $source.');
}
}
在这里,_showPermissionDeniedDialog
将通知用户,他们已经永久阻止了应用程序访问相机和图库,我引导用户进行设置以更改此设置。
我觉得奇怪的是,我找不到设置中的应用程序来更改权限.
1条答案
按热度按时间qzwqbdag1#
RTFM解决了我的问题。在Podfile中更改我的post_install以包括必要的权限解决了这个问题:
安装后执行|安装程序|installer.pods_project.targets.each do|目标|flutter_additional_ios_build_settings(target)target.build_configurations.each do| config|
为什么我需要在代码重构之后做这件事,这超出了我的理解。