React 本机权限在 ios 模拟器上始终返回不可用

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

我有一个使用

react-native-permissions
的应用程序。基本上,我的
App.js
上有一个关于位置的模式,只要用户没有在设备设置中选择“始终允许”选项,它就会显示。它在 Android 上运行良好,但是模式始终显示在 ios 模拟器中,因为我知道我已经选择了“始终允许”。

这是我的代码:

useEffect(() => {
    checkLocationPermission();
  }, []);

  const checkLocationPermission = async () => {
    const permission =
      Platform.OS === 'android'
        ? PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION
        : PERMISSIONS.IOS.LOCATION_ALWAYS;

    const permissionStatus = await check(permission);

    if (
      permissionStatus !== RESULTS.GRANTED &&
      permissionStatus !== RESULTS.BLOCKED
    ) {
      setCustomModal(true);
    }

我尝试

console.log(permissionStatus)
,发现它返回了
unavailable

请注意,我已经在我的

info.plist

中添加了以下内容
<key>NSLocationAlwaysUsageDescription</key>
<string></string>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>

在我的

podfile

permissions_path = '../node_modules/react-native-permissions/ios'
pod 'Permission-LocationWhenInUse', :path => "#{permissions_path}/LocationWhenInUse"
react-native react-native-permissions
2个回答
1
投票

所以我通过在我的

Podfile

中添加这些命令来解决这个问题
pod 'Permission-LocationWhenInUse', :path => "../node_modules/react-native-permissions/ios/LocationWhenInUse/Permission-LocationWhenInUse.podspec" 
pod 'Permission-LocationAlways', :path => "../node_modules/react-native-permissions/ios/LocationAlways/Permission-LocationAlways.podspec"

注意:

.podspec
文件有时具有不同的文件名,具体取决于版本,因此请务必签入
node_modules
以避免
pod install
问题。

应用代码更改后,我运行这些命令。

rm -rf /Library/Caches/CocoaPods && rm -rf Pods && rm -rf /Library/Developer/Xcode/DerivedData/* && cd ios && pod cache clean --all && pod deintegrate && pod setup && pod install --verbose && cd ..

然后重新运行我的项目。


0
投票

我在 iOS 上遇到同样的问题,在 Android 上运行完美。但在 iOS 上却不是,当我尝试记录位置时,它会在控制台中显示此信息

'当前权限状态:', '不可用' 正在请求位置许可... '权限结果:', '不可用'

在我的node_modules 的iOS 目录中,我找到Locationalways 和LocationWhenInUse 文件夹。但没有这样的文件

权限-LocationWhenInUse.podspec 权限-LocationAlways.podspec

我已经在我的 podfile 中添加了这些行

# Use the function to require react-native's and this package's scripts
node_require('react-native/scripts/react_native_pods.rb')
node_require('react-native-permissions/scripts/setup.rb')

但在 ios 上仍然无法显示位置

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