如何在 React Native / Expo 中请求权限?
Posted
技术标签:
【中文标题】如何在 React Native / Expo 中请求权限?【英文标题】:How to request permissions in React Native / Expo? 【发布时间】:2020-12-18 13:39:56 【问题描述】:编辑:截至 2021 年 9 月 12 日,对于通过 Expo SKD 版本 40 的任何内容,这种请求权限的方法已被贬值。
我正在尝试请求用户的位置。我尝试编写一个异步函数来告诉我我的请求是否已处理,但它被忽略了。系统提示我“位置请求”,但我相信它实际上是 Expo 应用程序,而不是我的功能。
下面是我的一些代码:
import React, useState, useEffect, Component from "react";
import Permissions , Request from 'expo-permissions'
//这是我写的提示用户给权限的async函数
async function getLocationAsync()
const status, permissions = await Permissions.askAsync( Permissions.LOCATION);
if (status === 'granted')
console.log('It worked!')
else
throw new Error('Location permission not granted');
//这会记录终端并让我知道用户的当前位置已被隔离(挂载)。当应用不再需要它们的位置时,它会卸载以防止内存泄漏。
const Screen = (navigation)=>
const [user_latitude, setUserLatitude] = useState(0)
const [user_longitude, setUserLongitude] = useState(0)
const [position_error, setPositionError] = useState(null)
useFocusEffect(
React.useCallback(()=>
let isActive = true;
const fetchGeoPosition = () =>
navigator.geolocation.getCurrentPosition(
position =>
if (isActive)
setUserLatitude(position.coords.latitude);
setUserLongitude(position.coords.longitude);
setPositionError(null);
console.log('Location Accessed')
setIsLoading(false)
,
error => isActive && setPositionError(error.message),
enableHighAccuracy: true, timeout: 0, maximumAge: 1000
);
fetchGeoPosition()
return () =>
isActive = false
console.log('Location Severed')
,
[],
),
)
【问题讨论】:
【参考方案1】:检查这个库的 react-native 权限
这里是https://www.npmjs.com/package/react-native-permissions。
仅对于 android,react-native 中有一个默认包。 (权限Android)
https://reactnative.dev/docs/permissionsandroid
同时更新您的清单文件。表示应用程序将使用需要用户权限的外部资源。
https://developer.android.com/guide/topics/manifest/uses-permission-element
对于 ios 更新 info.plist 文件
https://www.iosdev.recipes/info-plist/permissions/
【讨论】:
我必须通过文档才能找到答案,但这让我到达了我需要去的地方。感谢您的指导。以上是关于如何在 React Native / Expo 中请求权限?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 React Native / Expo 中请求权限?
如何在 expo react native 中使用 sqlite 文件
如何在 React Native Expo 中播放背景音乐?
如何使用 expo 实现带有 react-native 的条带? [关闭]
React Native - 如何构建 expo react native 应用程序,使其不需要 Expo android 应用程序打开