Flutter(在iOS上)-在运行时询问位置权限,没有对话框出现! (位置套餐)

时间:2019-12-30 21:57:29

标签: ios flutter location

我尝试使用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模拟器,没有结果。

最诚挚的问候。

2 个答案:

答案 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