ios - React Native/iOS 相机权限:显示警报以从设置中为不允许相机访问的用户打开权限?
问题描述
我正在使用 React Native 构建一个应用程序,照片上传是它的关键功能之一。这是我正在尝试做的事情:
- 当用户点击按钮打开相机胶卷时,告知用户是否允许相机访问。
- 如果用户不允许,则显示警报以要求用户从设置中打开权限,以确保在应用程序上获得适当的体验。
我应该从哪里开始解决这个问题?我一般是编程新手,对本机代码一点也不熟悉。我知道这是一个高级问题,因此将不胜感激一些高级指导。谢谢!
解决方案
您可以开始查看 react-native-permissions 模块。它允许您请求移动应用程序可能需要的任何类型的权限,并且对话是本地处理的,因此您不必担心自己构建警报。
https://github.com/zoontek/react-native-permissions
这是一个有关如何使用权限处理图像选择的示例
import ImagePicker, {
ImagePickerOptions,
ImagePickerResponse,
} from 'react-native-image-picker';
import { openSettings } from 'react-native-permissions';
import { alertWrapper } from './alert';
export const selectPicture = (options: ImagePickerOptions) => {
const pickerPromise = new Promise<ImagePickerResponse>((resolve) => {
try {
ImagePicker.showImagePicker(options, (response: ImagePickerResponse) => {
if (response.didCancel) {
return;
}
if (response.error) {
if (response.error.includes('permissions')) {
alertWrapper('Error', response.error, [
{ text: 'Open Settings', onPress: () => openSettings() },
]);
}
return;
}
resolve(response);
});
} catch (e) {
throw e;
}
});
return pickerPromise;
};
推荐阅读
- .net - C# 中 AWSConfigs.GetConfig 的示例
- anylogic - 将模型从 mac 复制到 windows pc 时出错
- javascript - 按值对地图进行排序,其中地图是 JavaScript 中的数组
- javascript - 使用 blob (react) 创建文件时出错:对象必须具有可调用的 @@iterator 属性
- java - 在 Spring 的响应体内返回 2 个对象的最佳方法
- html - 布尔玛中心柱,但在底部粘上额外的柱子
- c++ - 替换 to_utf8string 以确保在 C++ DLL 中的 Windows 7 上正确的字符串编码
- flowtype - 对函数参数强制执行流注释
- angular - 为什么我使用 Web Worker 的性能比在 Angular 应用程序中使用主线程的性能更差?
- kubernetes - 如何在 helm 模板中向 redis 添加密码