React Native expo-permission 已弃用,现在使用什么?

Han*_*ans 11 permissions location react-native expo

我正在使用 expo-permission 库中的权限来获取用户的位置坐标:

import * as Location from "expo-location";
import * as Permissions from 'expo-permissions';

const granted = await Permissions.askAsync(Permissions.LOCATION);
Run Code Online (Sandbox Code Playgroud)

上面的方法有效,但不断发出警告,警告博览会权限已被弃用。

如果我使用:

import {Location, Permissions } from 'expo';
Run Code Online (Sandbox Code Playgroud)

它说无法读取未定义的属性“askAsync”。

有人知道我应该使用什么吗?我用的是sdk42

谢谢!

Kar*_*key 19

正如Brent Vatne博客所说,

\n
\n

expo-permissions 已被弃用,取而代之的是module-specific permissions methods您应该从使用\n迁移Permissions.askAsyncPermissions.getAsync需要权限的模块导出的权限\n方法。

\n

例如:您应该将对\n 的调用替换为Permissions.askAsync(Permissions.CAMERA)\nCamera.requestPermissionsAsync()

\n

\xe2\x80\x99 不应该有两种方法在单个 SDK 中完成相同的操作,\n因此我们选择了首选方法并进行了整合。

\n
\n

所以现在,您必须使用Permissions单独的包

\n

对于位置,

\n

首先,安装expo-location

\n
expo install expo-location\n
Run Code Online (Sandbox Code Playgroud)\n

然后你可以像这样使用它

\n
expo install expo-location\n
Run Code Online (Sandbox Code Playgroud)\n


Fot*_*ris 6

如果有人来到这里并想要获得 的权限ImagePicker,那么根据文档,您应该这样做:

import * as ImagePicker from "expo-image-picker";


  const getPermissionAsync = async () => {
    const { status } = await ImagePicker.requestMediaLibraryPermissionsAsync();
    if (status !== "granted") {
      alert("...");
    }
  };
Run Code Online (Sandbox Code Playgroud)