我使用的一个框架(Indoo.rs SDK,用于蓝牙位置检测)开发用于plist文件中的NSLocationWhenInUseUsageDescription
。我还使用了核心位置管理器,该管理器配置为与NSLocationAlwaysUsageDescription
一起使用。
我可以在我的.plist中使用这两种方式吗?当有两种类型的硬件(蓝牙和GPS / WIFI / Celltowers)用于定位服务时,我不知道如何继续这样做。
答案 0 :(得分:3)
如果您在plist文件中提供了两个选项,则会在应用设置中看到3个位置条目:始终,在使用时和从不,如果仅在plist中提供NSLocationAlwaysUsageDescription
,您将看到两个条目设置:始终&从不,如果您仅在plist中提供NSLocationWhenInUseUsageDescription
,您将在设置中看到两个条目:When In Use&从未
答案 1 :(得分:2)
它与您正在使用的硬件无关 - 它与您是否只在应用程序在前台运行时(在使用授权中)或在您的应用程序在后台(始终授权)。
然后,您应该请求适当的访问级别。 "总是"授权包括"在使用时"授权,所以如果你提示用户"总是"授权然后,如果框架请求"何时使用"授权。
但是,如果框架要求"何时使用"在您的代码请求之前"始终"然后用户将看到两个请求,您将需要设置两个键 - 从用户体验的角度来看,您应该避免这种情况。
答案 2 :(得分:1)
基本上,您只能使用.plist中的NSLocationAlwaysUsageDescription
,因为如果您要求获得使用用户位置的权限,您当然也可以在应用程序使用时使用它。
这些只是设置。想一想您的应用程序将如何运作并选择适当的权限。 “始终允许”意味着即使没有运行,您的应用也可以更新其位置(这样也可以更快地耗尽电池并且始终将状态栏上的位置图标保留下来,并且更常见的是稍后由用户手动关闭)。所以选择你的应用真正需要的东西。
答案 3 :(得分:0)
列出两个选项可让用户更好地控制其隐私。用户可以决定仅在应用程序打开时允许位置但拒绝背景位置。