【问题标题】:Flutter permission_handler IOS locationFlutter permission_handler IOS位置
【发布时间】:2020-03-22 15:37:17
【问题描述】:

我想知道用户是在使用时选择还是总是选择(位置权限)。

我在 IOS 13 模拟器上使用此代码

static Future<PermissionStatus> checkPermissions() async {
    PermissionStatus permission = await PermissionHandler()
        .checkPermissionStatus(PermissionGroup.locationAlways);
    return permission;
  }

这会返回“GRANTED”,我希望它返回“always”或“when_in_use”。

这可能吗?

提前致谢!

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    我相信您现在已经弄清楚了,但问题是您询问的是locationAlways 的状态——对于该特定权限,该状态将被授予或拒绝。要了解locationWhenInUse 的状态,您必须直接询问。

    permission_handler 自提出此问题以来已发生变化,但对于您的情况,您可以这样使用它:

      Future<String> checkPermissions() async {
        PermissionStatus whenInUse = await Permission.locationWhenInUse.status;
        if (whenInUse == PermissionStatus.granted) return "when_in_use";
    
        PermissionStatus always = await Permission.locationAlways.status;
        if (always == PermissionStatus.granted) return "always";
    

    最后一个附注——当我偶然发现这个问题时,我在寻找 iOS 为何在请求许可时遇到问题。在 iOS 上请求位置权限时,请务必特别请求 locationWhenInUselocationAlways。 Android 允许您请求一般位置权限(Permission.location.request() 而不是,比如 Permission.locationAlways.request()),但我发现前者在 iOS 上失败,恕不另行通知。
    希望这有助于在某个地方节省一些时间。

    【讨论】:

      猜你喜欢
      • 2022-08-02
      • 1970-01-01
      • 1970-01-01
      • 2022-10-06
      • 2023-01-19
      • 2020-11-27
      • 2022-01-19
      • 2020-02-09
      • 2019-05-21
      相关资源
      最近更新 更多