Как узнать, какая библиотека запрашивает определенные разрешения 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 — это пакет, запрашивающий разрешение, потому что они позволяют легко это исправить.

Другие вопросы по тегам