react native中ios判断相机是否授权,没授权打开手机设置

react native中ios判断相机是否授权,没授权打开手机设置

CameraPermissionManager.h

复制代码
#import <React/RCTBridgeModule.h>

@interface CameraPermissionManager : NSObject <RCTBridgeModule>

@end

CameraPermissionManager.m

复制代码
#import "CameraPermissionManager.h"
#import <AVFoundation/AVCaptureDevice.h>

@implementation CameraPermissionManager

RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(checkCameraStatus:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
{
    AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
    
    if (status == AVAuthorizationStatusAuthorized) {
        resolve(@"authorized");
    } else if (status == AVAuthorizationStatusNotDetermined) {
        resolve(@"undetermined");
    } else if(status == AVAuthorizationStatusDenied || status == AVAuthorizationStatusRestricted){
        resolve(@"rejected");
    } else {
        resolve(@"denied");
    }
}

@end

cameraPermiss.js

复制代码
import {NativeModules} from 'react-native';

export default NativeModules.CameraPermissionManager;

使用

复制代码
import cameraPermiss from '../cameraPermiss.js'

//判断用户是否相机授权
  const cameraPermiss = async () => {
    if (Platform.OS == 'android') {
      const response = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.CAMERA);
      console.log("[相机授权]", response)
      if (response != 'granted') {
        //用户拒绝
        Linking.openSettings();
      } 
    } else {
      const response = await cameraPermiss.checkCameraStatus();
      console.log("[相机授权]", response)
      if (response == 'rejected') {
        //用户拒绝
        Linking.openSettings();
      } 
    }

  }
相关推荐
未来侦察班14 小时前
一晃13年过去了,苹果的Airdrop依然很坚挺。
macos·ios·苹果vision pro
lbb 小魔仙19 小时前
【HarmonyOS实战】React Native 表单实战:自定义 useReactHookForm 高性能验证
javascript·react native·react.js
锐意无限20 小时前
Swift 扩展归纳--- UIView
开发语言·ios·swift
符哥200820 小时前
用Apollo + RxSwift + RxCocoa搭建一套网络请求框架
网络·ios·rxswift
bbbbbb4bayue21 小时前
专业便携条码打印机选购指南:5大关键指标助您避开采购陷阱
数码相机
早點睡3901 天前
高级进阶 ReactNative for Harmony 项目鸿蒙化三方库集成实战:react-native-drag-sort
react native·react.js·harmonyos
早點睡3901 天前
高级进阶 ReactNative for Harmony 项目鸿蒙化三方库集成实战:react-native-video
react native·华为·harmonyos
文件夹__iOS1 天前
AsyncStream 进阶实战:SwiftUI 全局消息流极简实现
ios·swiftui·swift
PPPPPaPeR.1 天前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法
2501_916008891 天前
深入解析iOS机审4.3原理与混淆实战方法
android·java·开发语言·ios·小程序·uni-app·iphone