使用permission_handler包时,Flutter IOS不显示位置权限对话框

问题描述 投票:0回答:3

如何修复我的 flutter ios 应用程序不显示权限对话框当前使用的permission_handler 10.0.0 包该包在 android 中工作正常,但在 ios 上根本不会弹出授予或拒绝权限的对话框。 这是请求的函数

chkPermissionLoc(ctx) async {
var perLocation = await Permission.location.status;
    if (perLocation.isDenied) {
        await [Permission.location].request();//This isn't running
        print('Permission is Denied');
    } else if (perLocation.isGranted) {
      print('Permission is Granted');
    } else if (perLocation.isPermanentlyDenied) {
      print('Permission is permanently denied');
    } else if (perLocation.isRestricted) {
      print('Permission is OS restricted');
    } else if (perLocation.isLimited) {
      print('Permission is Limited');
    }
}

应用程序只是打印了Permission is Denied,但它之前应该显示对话框的函数根本没有被调用。 我已按照包中的文档在 info.plist 文件中添加了字符串值,但仍然存在相同的问题。

    <key>NSLocationWhenInUseUsageDescription</key>
    <string>Permission is Needed</string>
    <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
    <string>Permission is Needed 2</string>
    <key>NSLocationUsageDescription</key>
    <string>Permission is Needed 3</string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>Permission is Needed 4</string>

任何帮助将不胜感激

ios flutter dart permissions
3个回答
0
投票

请按照以下步骤更新 podfile。

  1. 进入ios文件夹
  2. 删除Podfile.lock文件
  3. rm -rf Pod
  4. pod 缓存清理--全部
  5. 豆荚分解
  6. 吊舱设置
  7. 吊舱安装

pod 仓库更新

希望有帮助


0
投票

您还需要向 podfile 添加一些代码,为此您可以参考 iOS 中的 flutter_permission handler 。只需简单地从官方文档中复制代码,无论您需要什么权限,只需取消注释即可。

` post_install 执行|安装程序| installer.pods_project.targets.each 执行 |target|

# Start of the permission_handler configuration
target.build_configurations.each do |config|

  # You can enable the permissions needed here. For example to enable camera
  # permission, just remove the `#` character in front so it looks like this:
  #
  # ## dart: PermissionGroup.camera
  # 'PERMISSION_CAMERA=1'
  #
  #  Preprocessor definitions can be found in: https://github.com/Baseflow/flutter-permission-handler/blob/master/permission_handler_apple/ios/Classes/PermissionHandlerEnums.h
  config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
    '$(inherited)',

    ## dart: PermissionGroup.calendar
    # 'PERMISSION_EVENTS=1',

    ## dart: PermissionGroup.reminders
    # 'PERMISSION_REMINDERS=1',

    ## dart: PermissionGroup.contacts
    # 'PERMISSION_CONTACTS=1',

    ## dart: PermissionGroup.camera
    # 'PERMISSION_CAMERA=1',

    ## dart: PermissionGroup.microphone
    # 'PERMISSION_MICROPHONE=1',

    ## dart: PermissionGroup.speech
    # 'PERMISSION_SPEECH_RECOGNIZER=1',

    ## dart: PermissionGroup.photos
    # 'PERMISSION_PHOTOS=1',

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

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

    ## dart: PermissionGroup.mediaLibrary
    # 'PERMISSION_MEDIA_LIBRARY=1',

    ## dart: PermissionGroup.sensors
    # 'PERMISSION_SENSORS=1',   

    ## dart: PermissionGroup.bluetooth
    # 'PERMISSION_BLUETOOTH=1',

    ## dart: PermissionGroup.appTrackingTransparency
    # 'PERMISSION_APP_TRACKING_TRANSPARENCY=1',

    ## dart: PermissionGroup.criticalAlerts
    # 'PERMISSION_CRITICAL_ALERTS=1'
  ]

end 
# End of the permission_handler configuration

结束 结尾 `


0
投票

这解决了我的问题:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
        '$(inherited)',

        ## dart: PermissionGroup.camera
        'PERMISSION_CAMERA=1',

        ## dart: PermissionGroup.photos
        'PERMISSION_PHOTOS=1',

        ##Other permissions
        ]
    end
    flutter_additional_ios_build_settings(target)
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.