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();
      } 
    }

  }
相关推荐
Thomas_YXQ8 小时前
Unity3D在ios平台下内存的优化详解
开发语言·macos·ios·性能优化·cocoa
摘星编程11 小时前
React Native + OpenHarmony:useId唯一标识生成
javascript·react native·react.js
摘星编程12 小时前
在OpenHarmony上用React Native:collapsable节点优化策略
javascript·react native·react.js
_李小白13 小时前
【Android 美颜相机】第二十一天:GPUImageChromaKeyBlendFilter (颜色加深混合滤镜)
android·数码相机
摘星编程15 小时前
React Native鸿蒙:useLayoutEffect同步布局计算
react native·react.js·harmonyos
摘星编程15 小时前
OpenHarmony环境下React Native:hitSlop热区扩展配置
javascript·react native·react.js
言之。15 小时前
MacBook M3 Pro:React Native 安卓开发
android·react native·react.js
zhyongrui16 小时前
SwiftUI 光晕动画性能优化:消除托盘缩放卡顿的实战方案
ios·性能优化·swiftui
TheNextByte116 小时前
如何通过 6 种方式删除 iPhone/iPad 上的文件
ios·iphone·ipad
摘星编程17 小时前
用React Native开发OpenHarmony应用:useImperativeHandle暴露实例方法
javascript·react native·react.js