【问题标题】:Can i use both NSLocationWhenInUseUsageDescription & NSLocationAlwaysUsageDescription?我可以同时使用 NSLocationWhenInUseUsageDescription 和 NSLocationAlwaysUsageDescription 吗?
【发布时间】:2015-05-19 12:26:11
【问题描述】:

我使用的其中一个框架(Indoo.rs SDK,用于蓝牙位置检测)是为了与 plist 文件中的NSLocationWhenInUseUsageDescription 一起工作而开发的。我还在使用配置为与 NSLocationAlwaysUsageDescription 一起使用的核心位置管理器。

我可以在我的 .plist 中同时使用这两者吗?当有两种类型的硬件(蓝牙和 GPS/WIFI/蜂窝塔)用于定位服务时,我不确定如何进行此操作。

【问题讨论】:

  • 这在 iOS 11 上是可能的。您需要同时提供NSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescription

标签: ios core-location


【解决方案1】:

如果您在 plist 文件中提供两个选项,您将在应用设置中看到 3 个位置条目:始终、使用时和从不,如果您仅在 plist 中提供 NSLocationAlwaysUsageDescription,您将在设置中看到两个条目:始终和从不,如果您仅在 plist 中提供NSLocationWhenInUseUsageDescription,您将在设置中看到两个条目:使用时和从不

【讨论】:

    【解决方案2】:

    这与您正在使用的硬件无关 - 它与您是否只想在您的应用程序在前台运行(使用授权时)或当您的应用程序运行时使用位置服务器有关在后台(始终授权)。

    然后您应该请求适当的访问级别。 “始终”授权包括“使用时”授权,因此如果您提示用户“始终”授权,那么如果框架请求“使用时”授权,则不会提示他们。

    但是,如果框架在您的代码请求“始终”之前请求“使用时”,那么用户将看到两个请求,您将需要设置两个键 - 从用户体验的角度来看,您应该避免这种情况。

    【讨论】:

      【解决方案3】:

      基本上,您只能在 .plist 中使用 NSLocationAlwaysUsageDescription,因为如果您请求始终使用用户位置的权限,您当然也可以在应用程序正在使用时使用它。

      这些只是设置。想想您的应用程序将如何工作并选择适当的权限。 “始终允许”意味着您的应用即使没有运行也可以更新其位置(这也会更快地耗尽电池并始终在状态栏上保留位置图标,并且更常见的是用户稍后手动将其关闭)。因此,请选择您的应用真正需要的内容。

      【讨论】:

        【解决方案4】:

        同时列出这两个选项可以让用户更好地控制其隐私。用户可以决定只在应用打开时允许位置,但拒绝后台位置。

        【讨论】:

          猜你喜欢
          • 2018-10-27
          • 2011-07-21
          • 2019-05-21
          • 2021-09-05
          • 2014-04-08
          • 2020-06-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多