Как узнать, какая библиотека запрашивает определенные разрешения iOS во Flutter?
Я разрабатываю приложение Flutter, основанное на нескольких внешних библиотеках. Я не использую камеру в приложении, однако, когда я пытаюсь отправить приложение в AppStoreConnect, Apple отклоняет мое приложение, потому что они говорят, что у меня нет NSCameraUsageDescription в моем файле Info.plist. Поскольку я не использую его непосредственно в своем приложении, это должна быть внешняя библиотека. Есть ли способ понять, какая библиотека запрашивает это разрешение?
1 ответ
Запустите эту команду:
flutter pub deps | grep permission_handler
Если вы вообще получаете какие-либо выходные данные, то пакет загружается. ЕСЛИ это пакет, который запрашивает разрешения, есть способ настроить исключение/отключение импортированных библиотек разрешений в вашем
Podfile
. Найдите этот раздел:
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
... (you may have additional customizations here)
end
end
И добавьте несколько флагов, чтобы отключить эти разрешения, добавив такой флаг, как
'PERMISSION_CAMERA=0',
к разрешениям, которые вы хотите отключить, например:
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config| # <-- start adding from here
# You can remove unused permissions here
# for more infomation: https://github.com/BaseflowIT/flutter-permission-handler/blob/develop/permission_handler/ios/Classes/PermissionHandlerEnums.h
# e.g. when you don't need camera permission, just add 'PERMISSION_CAMERA=0'
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
## dart: PermissionGroup.calendar
'PERMISSION_EVENTS=0',
## dart: PermissionGroup.reminders
'PERMISSION_REMINDERS=0',
## dart: PermissionGroup.contacts
# 'PERMISSION_CONTACTS=0',
## dart: PermissionGroup.camera
# 'PERMISSION_CAMERA=0',
## dart: PermissionGroup.microphone
'PERMISSION_MICROPHONE=0',
## dart: PermissionGroup.speech
'PERMISSION_SPEECH_RECOGNIZER=0',
## dart: PermissionGroup.photos
# 'PERMISSION_PHOTOS=0',
## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
'PERMISSION_LOCATION=0',
## dart: PermissionGroup.notification
# 'PERMISSION_NOTIFICATIONS=0',
## dart: PermissionGroup.mediaLibrary
'PERMISSION_MEDIA_LIBRARY=0',
## dart: PermissionGroup.sensors
'PERMISSION_SENSORS=0',
## dart: PermissionGroup.bluetooth
'PERMISSION_BLUETOOTH=0'
]
end # <-- end adding here
end
end
В приведенном выше примере я закомментировал (потому что мои приложения используют их) контакты, камеру, фотографии и уведомления; и отключает все остальные разрешения.
Надеюсь , разрешение_handler — это пакет, запрашивающий разрешение, потому что они позволяют легко это исправить.