1

问题描述 我正在开发跟踪应用程序,并希望在用户启动它的跟踪服务时启用“始终”位置权限。在这里,我正在构建用户经过的路径,因此即使应用程序是后台,我也想检测纬度和经度。现在,当用户将位置选项选择为“使用应用程序时”时会出现问题,在这种情况下,当应用程序处于后台并产生问题时,我无法获得用户的准确纬度和经度。在这种情况下,我无法为用户建立正确的轨道。

为此,我只添加了

“NSLocationAlwaysUsageDescription”

但它会产生错误::

此应用程序试图在没有使用说明的情况下访问隐私敏感数据。应用程序的 Info.plist 必须同时包含 NSLocationAlwaysAndWhenInUseUsageDescription 和 NSLocationWhenInUseUsageDescription 键,其中包含向用户解释应用程序如何使用此数据的字符串值

为了解决这个问题,我必须添加所有权限,这在我的情况下工作正常。但是现在用户在启用位置时获得了三个选项:“使用应用程序时允许”、“始终允许”和“不允许”。这里出现问题。

要求 我想限制用户只启用“始终”位置选项,但现在位置请求弹出窗口显示三个选项。是否有任何方法可以检测用户选择的选项,如果用户将选择除始终以外的任何选项,我会告诉他在使用跟踪系统时选择“始终”。

1.基本上我想检测用户选择的位置选项,如果不是“总是”我想再次要求他选择“总是”位置选项。这可能吗?

2.我想在请求服务弹出窗口中添加“始终”选项,目前我得到这三个值:“使用应用程序时允许”、“允许一次”和“不允许”。我添加了以下格式的权限::

<key>NSLocationUsageDescription</key>
<key>NSLocationAlwaysUsageDescription</key>
<key>NSLocationWhenInUseUsageDescription</key>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>

但它只显示三个值检查此屏幕截图::

在此处输入图像描述

4

1 回答 1

3

您可以使用react-native-permissions

import Permissions, { PERMISSIONS, RESULTS } from 'react-native-permissions'

const permissionStatus = await Permissions.check(PERMISSIONS.IOS.LOCATION_ALWAYS)

permissionsStatus将是RESULTS可能的值之一:

在此处输入图像描述

于 2020-01-23T12:42:23.673 回答