[Swift]相册/相机/麦克风权限检测

2024-08-20 22:38

本文主要是介绍[Swift]相册/相机/麦克风权限检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/// 保存图片
private func saveImage() {guard PermissionsHelper.photoEnable() else{return}guard let ig = self.shareImg else {ScreenUIManager.showToastMessage(message: "保存失败")return}UIImageWriteToSavedPhotosAlbum(ig, self, #selector(saveImage(image:didFinishSavingWithError:contextInfo:)), nil)
}
import UIKit
import AVKit
import Photosstruct PermissionsHelper {static func cameraEnable() -> Bool {func cameraResult() {let authStatus = AVCaptureDevice.authorizationStatus(for: AVMediaType.video)if (authStatus == .authorized) {            // 已授权,可以打开相机saveCamera(value: "1")} else if (authStatus == .denied) {         // 已拒绝saveCamera(value: "0")let alertV = UIAlertView.init(title: "提示", message: "请去-> [设置 - 隐私 - 相机] 打开访问开关", delegate: nil, cancelButtonTitle: nil, otherButtonTitles: "确定")alertV.show()} else if (authStatus == .restricted) {     // 相机权限受限saveCamera(value: "0")let alertV = UIAlertView.init(title: "提示", message: "相机权限受限", delegate: nil, cancelButtonTitle: nil, otherButtonTitles: "确定")alertV.show()} else if (authStatus == .notDetermined) {  // 首次 使用AVCaptureDevice.requestAccess(for: .video, completionHandler: { (statusFirst) inif statusFirst {// 用户首次允许saveCamera(value: "1")} else {// 用户首次拒绝saveCamera(value: "0")}})}}func saveCamera(value: String) {UserDefaults.standard.setValue(value, forKey: "cameraEnablebs")}cameraResult()let result = (UserDefaults.standard.value(forKey: "cameraEnablebs") as? String) == "1"return result}static func audioEnable() -> Bool {func audioResult() {let authStatus = AVCaptureDevice.authorizationStatus(for: AVMediaType.audio)if (authStatus == .authorized) {            // 已授权,可以使用摄像头saveAudio(value: "1")} else if (authStatus == .denied) {         // 已拒绝saveAudio(value: "0")let alertV = UIAlertView.init(title: "提示", message: "请去-> [设置 - 隐私 - 麦克风] 打开访问开关", delegate: nil, cancelButtonTitle: nil, otherButtonTitles: "确定")alertV.show()} else if (authStatus == .restricted) {     // 相机权限受限saveAudio(value: "0")let alertV = UIAlertView.init(title: "提示", message: "相机权限受限", delegate: nil, cancelButtonTitle: nil, otherButtonTitles: "确定")alertV.show()} else if (authStatus == .notDetermined) {  // 首次 使用AVCaptureDevice.requestAccess(for: .video, completionHandler: { (statusFirst) inif statusFirst {// 用户首次允许saveAudio(value: "1")} else {// 用户首次拒绝saveAudio(value: "0")}})}}func saveAudio(value: String) {UserDefaults.standard.setValue(value, forKey: "audioEnablebs")}audioResult()let result = (UserDefaults.standard.value(forKey: "audioEnablebs") as? String) == "1"return result}static func photoEnable() -> Bool {func photoResult() {let status = PHPhotoLibrary.authorizationStatus()if (status == .authorized) {savePhoto(value: "1")} else if (status == .restricted || status == .denied) {let alertV = UIAlertView.init(title: "提示", message: "请去-> [设置 - 隐私 - 相册] 打开访问开关", delegate: nil, cancelButtonTitle: nil, otherButtonTitles: "确定")alertV.show()savePhoto(value: "0")} else if (status == .notDetermined) { // 首次使用PHPhotoLibrary.requestAuthorization({ (firstStatus) inlet isTrue = (firstStatus == .authorized)if isTrue {// 用户首次允许savePhoto(value: "1")} else {// 用户首次拒绝savePhoto(value: "0")}})}}func savePhoto(value: String) {UserDefaults.standard.setValue(value, forKey: "photoEnablebs")}photoResult()let result = (UserDefaults.standard.object(forKey: "photoEnablebs") as? String) == "1"return result}}

这篇关于[Swift]相册/相机/麦克风权限检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091378

相关文章

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

SpringBoot AspectJ切面配合自定义注解实现权限校验的示例详解

《SpringBootAspectJ切面配合自定义注解实现权限校验的示例详解》本文章介绍了如何通过创建自定义的权限校验注解,配合AspectJ切面拦截注解实现权限校验,本文结合实例代码给大家介绍的非... 目录1. 创建权限校验注解2. 创建ASPectJ切面拦截注解校验权限3. 用法示例A. 参考文章本文

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

Linux权限管理与ACL访问控制详解

《Linux权限管理与ACL访问控制详解》Linux权限管理涵盖基本rwx权限(通过chmod设置)、特殊权限(SUID/SGID/StickyBit)及ACL精细授权,由umask决定默认权限,需合... 目录一、基本权限概述1. 基本权限与数字对应关系二、权限管理命令(chmod)1. 字符模式语法2.

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、