有没有一种简单的方法可以找到在 flutter 中使用权限的包? Info.plist 提交问题中缺少目的字符串

Is there an easy way to find packages that use permissions in flutter? Missing Purpose String in Info.plist submission problem

在向 Apple 提交申请的过程中,我收到以下 ITMS-90683 通知:Info.plist 中缺少目的字符串。

NSBluetoothPeripheralUsageDescription
NSBluetoothAlwaysUsageDescription
NSLocationWhenInUseUsageDescription 

以前这个问题与 permission_handler 包有关,但是使用文档中提供的脚本可以有效地排除包触及但应用程序未使用的权限。更新所有依赖项并添加许多其他依赖项后,我发现系统提示我输入这三个我不会真正使用的权限。有没有一种快速的方法可以找到要使用的这些包中的哪一个?如果不知道哪个包可能需要这些权限?

  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.2
  flutter_spinkit: ^5.0.0
  shared_preferences: ^2.0.4
  cached_network_image: 2.5.1
  cached_video_player: ^1.0.3
  rxdart: ^0.25.0
  flutter_inappwebview: ^5.1.0+4
  sqflite: ^2.0.0+2
  path: ^1.8.0
  pull_to_refresh: ^1.6.4
  font_awesome_flutter: ^8.12.0
  flutter_svg: ^0.19.3
  purchases_flutter: ^3.1.0
  url_launcher: ^6.0.2
  rflutter_alert: ^2.0.2
  modal_progress_hud: ^0.1.3
  sizer: ^1.1.8
  permission_handler: ^6.1.0
  image_gallery_saver: ^1.6.8
  http: ^0.13.0
  path_provider: ^2.0.1
  onesignal_flutter: ^3.0.0-beta1
  google_mobile_ads: ^0.11.0+3
  #Firebase dependencies
  firebase_core: ^1.0.1
  firebase_auth: ^1.0.1
  cloud_firestore: ^1.0.1
  firebase_crashlytics: ^1.0.0
  firebase_analytics: ^7.1.1 

我不想为我不打算使用的权限添加理由。 谢谢

编辑 1:我附上 permission_handler 请求的 Podfile 部分。如自述文件中所示,我的应用程序实际使用的权限已被注释(照片和通知)

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['IPHONEOS_DEPLOYMENT_TARGET'] = '10.0'
      config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'

    # 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.photos
      # 'PERMISSION_PHOTOS=0',

      ## dart: PermissionGroup.notification
      # 'PERMISSION_NOTIFICATIONS=0',

      ## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
      'PERMISSION_LOCATION=0',

      ## 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.mediaLibrary
      'PERMISSION_MEDIA_LIBRARY=0',

      ## dart: PermissionGroup.sensors
      'PERMISSION_SENSORS=0'
    ]
    end
  end
end

编辑 2:蓝牙权限是否可能是新的 flutter 版本 2.0.2 的错误?调试模式下的 Flutter,在首次启动 iOS 应用程序时,它总是要求获得检测附近设备的权限(即使在我之前使用的 1.22 版本中也是如此)

尝试

## dart: PermissionGroup.bluetooth
'PERMISSION_BLUETOOTH=0'

它是最近添加到 permission_handler GitHub 文档中的:https://github.com/Baseflow/flutter-permission-handler

他们也可以删除的另一个权限是:

## dart: PermissionGroup.photosAddOnly
'PERMISSION_PHOTOS_ADD_ONLY = 0',