首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >颤振权限处理程序授予在iOS上不显示

颤振权限处理程序授予在iOS上不显示
EN

Stack Overflow用户
提问于 2021-07-31 06:36:43
回答 2查看 9.1K关注 0票数 10

我创建了一个类来请求许可,它可以立即登录,它显示在Android上,但在iOs上,我没有看到任何许可授予。

代码语言:javascript
运行
复制
class PermissionService {
  Future permissionHandler() async {
    await Permission.contacts.shouldShowRequestRationale;
    if (await Permission.contacts.request().isGranted) {
      // Either the permission was already granted before or the user just granted it.
    }
    Map<Permission, PermissionStatus> statuses = await [
      Permission.locationWhenInUse,
      Permission.locationAlways,
      Permission.photos,
      Permission.camera,
      Permission.location,
      Permission.microphone,
      Permission.notification,
    ].request();

    if (statuses[Permission.location].isDenied) {
      print("Location permission is denied.");
    }

    if (statuses[Permission.camera].isDenied) {
      print("Camera permission is denied.");
    }
    if (statuses[Permission.photos].isDenied) {
      print("Photos permission is denied.");
    }
    if (statuses[Permission.notification].isDenied) {
      print("Notification permission is denied.");
    }
    if (statuses[Permission.microphone].isDenied) {
      print("Microphone permission is denied.");
    }
    if (statuses[Permission.locationWhenInUse].isDenied) {
      print("locationWhenInUse permission is denied.");
    }
    if (statuses[Permission.locationAlways].isDenied) {
      print("locationAlways permission is denied.");
    }
  }
}

我在Login.dart的初始状态中调用这个函数

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-31 08:22:53

permission_handler包在8.0.0版本中引入了一个突破性的更改,参见变化量g。默认情况下,iOS上的权限是禁用的,并且您的GCC_PREPROCESSOR_DEFINITIONS文件中设置了正确的GCC_PREPROCESSOR_DEFINITIONS这里可以找到一个示例Podfile,但基本上您必须将其添加到Podfile中,设置不用于0的权限

代码语言:javascript
运行
复制
post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
      # You can remove unused permissions here
      # for more infomation: https://github.com/BaseflowIT/flutter-permission-handler/blob/master/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=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
end

编辑1:一旦完成,保存您的Podfile,然后停止项目的当前实例,因为热重新启动不会反映更改。重新构建项目,permission_handler请求现在应该能够很好地工作。

编辑2:正如@YugankaSharan所建议的,要使更改生效,可能需要运行pod install

票数 25
EN

Stack Overflow用户

发布于 2022-10-17 03:24:06

在我的例子中,我也使用这个库。但问题不在于图书馆。这个应用程序甚至没有显示一个询问位置权限的对话框。然后我进入设置,转到应用程序,而我没有看到请求的位置权限界面。

问题在于我的Info.plist文件。

代码语言:javascript
运行
复制
<key>NSLocationAlwaysUsageDescription</key> 
<string>Cho phép Chat truy cập thông tin vị trí để chia sẻ vị trí trong cuộc trò chuyện</string> 
<key>NSLocationWhenInUseUsageDescription</key> 
<string>Cho phép Chat truy cập thông tin vị trí để chia sẻ vị trí trong cuộc trò chuyện</string>

权限NSLocationAlwaysUsageDescription高于NSLocationWhenInUseUsageDescription是错误的。因此,应该颠倒顺序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68599765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档