[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

相关文章

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服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA