React Native iOS:“使用时”权限自动授予“始终”权限

问题描述 投票:0回答:1

我在 React Native iOS 应用程序中遇到位置权限问题。当出现权限提示时,我选择“使用时”进行位置访问,但当我稍后检查“始终”权限时,它也被授予,即使我从未选择它。

这是我的代码:

if (Platform.OS === 'ios') {
    console.log('Requesting "When In Use" location permission for iOS...');
    const whenInUseStatus = await request(PERMISSIONS.IOS.LOCATION_WHEN_IN_USE);
    console.log('whenInUseStatus:', whenInUseStatus);

    if (whenInUseStatus === RESULTS.GRANTED) {
        // Checking for "Always" permission
        const alwaysStatus = await check(PERMISSIONS.IOS.LOCATION_ALWAYS);
        console.log('alwaysStatus:', alwaysStatus);

        if (alwaysStatus !== RESULTS.GRANTED) {
            Alert.alert(
                'Enable "Always" Location Access',
                'To provide a better experience, please enable "Always" location access in the app settings.',
                [
                    {
                        text: 'Go to Settings',
                        onPress: () => {
                            Linking.openURL('app-settings:');
                        },
                    },
                    { text: 'Cancel', style: 'cancel' },
                ]
            );
        }
    }
}

Info.plist 中,我添加了这些:

  • NSLocationWhenInUseUsageDescription
  • NSLocationAlwaysUsageDescription
  • NSLocationAlwaysAndWhenInUseUsageDescription

弹出窗口显示“使用时”“仅一次”“从不”的正确选项。但是,当我选择 “使用时” 时,我发现该应用程序还获得了 “始终” 授予的权限,这不是我所期望的。

是否有人遇到过类似的问题,选择 “使用时” 也授予 “始终” 权限?为什么会发生这种情况,如何确保仅在明确选择时才授予“始终”

如有任何指导,我们将不胜感激!

我预计当我在弹出窗口中选择“使用时”位置权限时,只会授予该权限。然而,选择“使用时”后,我检查了“始终”权限,也被授予了,这不是我所期望的。我尝试使用 request 和 check 检查两个权限的状态,但我仍然看到这种行为。

ios react-native permissions location react-native-permissions
1个回答
0
投票

更新:我发现选择“使用时”可以在iOS上临时授予“始终”权限。库文档表明,如果选择“使用应用程序时”,请求“始终”也会授予临时后台访问权限。我想要的:我需要在应用程序启动时明确提示“始终”位置访问,而不仅仅是在后台。我怎样才能实现这个目标?

© www.soinside.com 2019 - 2024. All rights reserved.