前言
在移动应用中,使用设备的各种硬件和资源需要获取用户的授权,因此权限管理是开发中的重要环节。expo-permissions 是一个方便的库,能够让开发者快捷且安全的请求设备的各种权限,如相机、通知等。
安装
可以通过 npm 或者 yarn 安装 expo-permissions:
--- ------- ---------------- ---- --- ----------------
安装完成之后,可以在项目中以如下方式引入:
------ - -- ----------- ---- -------------------
使用
expo-permissions 里面包括多种权限,如 Camera、Location、Contacts、MediaLibrary等。
获取权限状态
使用 Permissions.getAsync()
函数来查询权限是否授权:
----- -------- --------------------- - ----- - ------ - - ----- ---------------------------------------------- ------ ------- -
该函数返回一个 Promise ,可以通过 async/await 异步获取,status为一个字符串,可能的取值是 "undetermined"、"granted"、"denied"、"blocked"。
请求权限
使用 Permissions.askAsync()
函数来请求权限:
----- -------- ------------------- - ----- - ------ - - ----- ---------------------------------------------- ------ ------- -
该函数返回一个 Promise ,可以通过 async/await 异步获取,status为一个字符串,可能的取值是 "granted"、"denied";
监听权限变化
使用 Permissions.addListener()
函数来监听权限变化:
----- ------------- - -------------------------------- -- - ----------------------- ------ --------- - ------------------- ---
该函数返回的是一个 Subscription 对象,记得及时删除。
-----------------------
示例代码
下面是一个基于 React Native 环境下的例子,当用户授权了相册权限,可以选择图片上传:
------ ------ - -------- - ---- -------- ------ - ----- ----- ----------------- ------ -------- - ---- --------------- ------ - -- ----------- ---- ------------------- ------ ----------- ---- -------------------- ----- ---------------------- - - ---- -------------------------- -------- ------------------------ -- ------ ------- -------- ------------- - ----- ------- --------- - --------------- ----- ----------- - ----- -- -- - ----- - ------ - - ----- ---------------------------------------------------------- -- ------- --- ---------- - ------------------ ------- - ----- ------ - ----- ------------------------------------- -------------- ----- ------- --- -- --- -- ------------------- - --------------------- - -- ------ - ----- -------- ----- -- ----------- --------- --------------- -------- --- ------ -- ------ --------- ---- ----- -- -------- ------ ---- ------- --- -- --- ----------------- ---------------------- ----------------- ------------------- ------- -- -
该示例代码使用了 expo-image-picker 库来选择图片,使用了 Platform API 来区分 iOS 和 Android 安装的权限名称。同时新增了反馈用户未授权的处理逻辑。
总结
在 React Native 应用开发中,使用expo-permissions 可以快速、安全地请求各种权限,可以极大的简化应用的开发过程。在使用过程中,需先判断当前权限状态,然后再决定是否向用户申请授权。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedabd0b5cbfe1ea0610882