如何修复我的 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>
任何帮助将不胜感激
请按照以下步骤更新 podfile。
pod 仓库更新
希望有帮助
您还需要向 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
结束 结尾 `
这解决了我的问题:
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