React Native expo-permission 已弃用现在使用啥?
Posted
技术标签:
【中文标题】React Native expo-permission 已弃用现在使用啥?【英文标题】:React Native expo-permission deprecated what to use now?React Native expo-permission 已弃用现在使用什么? 【发布时间】:2021-10-10 13:19:43 【问题描述】:我正在使用 expo-permission 库中的权限来获取用户的位置坐标:
import * as Location from "expo-location";
import * as Permissions from 'expo-permissions';
const granted = await Permissions.askAsync(Permissions.LOCATION);
上述方法有效,但不断发出警告说不推荐使用expo-permissions。
如果我使用:
import Location, Permissions from 'expo';
它说无法读取未定义的属性“askAsync”。
有人知道我应该使用什么吗?我用sdk42
谢谢!
【问题讨论】:
【参考方案1】:正如Brent Vatne 的blog 所说,
expo-permissions 已被弃用,取而代之的是
module-specific permissions methods
您应该从使用迁移Permissions.askAsync
和Permissions.getAsync
到权限 需要权限的模块导出的方法。例如:您应该替换调用
Permissions.askAsync(Permissions.CAMERA)
与Camera.requestPermissionsAsync()
不应该有两种方法可以在一个 SDK 中做同样的事情, 所以我们选择了我们喜欢的方法并正在巩固 它。
所以现在,您将不得不使用各个包中的Permissions
对于位置,
首先,安装expo-location
expo install expo-location
那你就可以这样使用了
import * as Location from 'expo-location';
let status = await Location.requestForegroundPermissionsAsync();
if (status !== 'granted')
console.log('Permission to access location was denied');
return;
【讨论】:
【参考方案2】:现在有了 expo,每个库都有自己的权限请求方法。
位置示例:
let status = await Location.requestForegroundPermissionsAsync();
Documentation
【讨论】:
谢谢它的工作我赞成另一个,因为解释得更详细,但你的答案是正确的!【参考方案3】:如果有人来这里并想获得ImagePicker
的权限,那么根据docs 你应该这样做:
import * as ImagePicker from "expo-image-picker";
const getPermissionAsync = async () =>
const status = await ImagePicker.requestMediaLibraryPermissionsAsync();
if (status !== "granted")
alert("...");
;
【讨论】:
【参考方案4】:import Camera from "expo-camera";
this.state =
hasCameraPermission: null,
type: Camera.Constants.Type.back,
;
componentDidMount = async () =>
const status = await Camera.requestCameraPermissionsAsync();
this.setState( hasCameraPermission: status === "granted" );
;
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于React Native expo-permission 已弃用现在使用啥?的主要内容,如果未能解决你的问题,请参考以下文章
react-native:无法使用发布模式访问Android权限
任务 ':expo-permissions:compileDebugKotlin' 执行失败
react-native init 指定 react 版本和 react-native 版本
添加 React-Native-Camera 和 React-Native-Push-Notification 后无法构建 React Native