javascript - 如果用户第一次拒绝访问 ReactNative,则请求许可

标签 javascript react-native ecmascript-6

<分区>

我的应用程序的问题是,当用户第一次拒绝访问媒体库,然后当他回来并尝试从手机上传照片时,设备不再询问是否允许此应用程序进入在你的媒体库中,这个问题只出现在 IOS 中,因为在 Android 中我可以用这个解决它:

import {PermissionsAndroid} from 'react-native';

最佳答案

这就是权限在 iOS 中的工作方式,一旦权限被拒绝,就无法真正让应用再次请求权限。让用户启用权限的唯一方法是将他们引导至其应用程序的设置并手动将其打开。

我对权限执行以下操作。

  1. 当用户点击媒体库按钮时,检查权限状态。
  2. 如果没有请求权限 -> 请求权限
  3. 如果之前已请求权限,则显示警告并告诉用户转到设置页面。
  4. 如果权限已获批准显示媒体库

我使用 react-native-permissions 来检查和请求我在 iOS 中需要的权限。 https://github.com/zoontek/react-native-permissions

然后您可以使用react-native-permissionsopen-settings 功能打开设置页面https://github.com/zoontek/react-native-permissions#opensettings

这需要修改 native 代码,因此根据您的 Expo 设置,它可能无法正常工作。

我还在我的应用程序中使用了 Redux(你可以使用 AsyncStorage)并且我跟踪了 AppState .所以我知道用户何时从设置屏幕返回应用程序,以便我可以在应用程序中执行任何适当的操作(例如再次检查权限、打开媒体库等)。

关于javascript - 如果用户第一次拒绝访问 ReactNative,则请求许可,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54673895/

相关文章:

javascript - Jest 的 Marble 测试失败,但 Jasmine 的等效测试成功

javascript - React Native FlatList 不呈现

android - react 导航 : Swipe on drawer does not work in Android

ios - TypeError:未定义不是对象(正在评估'_pushNotifications.pushNotifications.configure')React Native

javascript - 通过的 react 组件在表单标签的可访问性单元测试中失败了吗?

javascript - 单击一个 div 改变另一个的位置

javascript - 在我的代码中使用 Promises?使用延迟对象和 Jquery

javascript - 如何从 JS 文件中导出所有函数?

javascript - 你今天如何在前端使用 es6 promises?

javascript - React-Router:为什么 <Link> 组件的 onClick 处理程序不会调度我的操作?