我尝试使用iOS模拟器上的位置包 来请求位置访问权限,但是对话框不显示?
try / catch块甚至没有被调用。
当我在Android设备上尝试时,它的工作原理就像一个魅力。
我的代码:
try {
if (await new Location().requestPermission()) {
print("User granted location permission!");
hasPermission = true;
await checkLocationService();
} else {
print("User denied permission!");
}
} catch (error) {
print(error);
}
包裹:https://pub.dev/packages/location
Info.plist:
<key>NSLocationWhenInUseUsageDescription</key>
<string>We need your location to find places near to you.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>We need your location to find places near to you.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>We need your location to find places near to you.</string>
我跑得“干净”,没有结果。 我已经在iOS模拟器上重新安装了该应用程序,没有结果。 我什至重启了iOS模拟器,没有结果。
最诚挚的问候。
答案 0 :(得分:0)
首先,我将检查以确保该应用程序具有手机设置本身中的位置权限。
我将亲自使用permission_handler软件包。它可以轻松处理android和ios的所有权限。我在两个方面都成功使用了它。
https://pub.dev/packages/permission_handler#-readme-tab-
然后,您可以在下面使用以获得位置权限,您可以将其放置在主要功能中。这也很棒,因为您可以轻松获得任何其他许可,并且可以通过这两行来做到这一点。如果许可已被接受,它将检查,确认并继续,如果尚未接受,它将询问用户许可。
import 'package:permission_handler/permission_handler.dart';
Map<PermissionGroup, PermissionStatus> permissions = await PermissionHandler().requestPermissions([PermissionGroup.location]);
答案 1 :(得分:0)
您还需要将 import java.nio.file.Files;
添加到您的 PERMISSION_LOCATION=1
。
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['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
## Add this line
'PERMISSION_LOCATION=1'
]
end
end
end