iOS常用权限是否开启判断

2024-06-23 10:32

本文主要是介绍iOS常用权限是否开启判断,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.iOS开发检测是否开启定位:

需要导入: 

#import <CoreLocation/CoreLocation.h>

代码如下:

+ (void)openLocationServiceWithBlock:(void(^)(BOOL))callback
{BOOL isOPen = NO;if ([CLLocationManager locationServicesEnabled] &&[CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied) {isOPen = YES;}callback(isOPen);
}

2.iOS开发检测是否允许消息推送:

需要导入:

#import <UserNotifications/UserNotifications.h>

代码如下:

+ (void)openMessageNotificationServiceWithBlock:(void(^)(BOOL))callback
{BOOL isOpen = NO;
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0UIUserNotificationSettings *setting = [[UIApplication sharedApplication] currentUserNotificationSettings];if (setting.types != UIUserNotificationTypeNone) {isOpen = YES;}
#elseUIRemoteNotificationType type = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];if (type != UIRemoteNotificationTypeNone) {isOpen = YES;}
#endifcallback(isOpen);
}
+ (void)openMessageNotificationServiceWithBlock:(void(^)(BOOL))callback
{
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0[[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings *settings) {callback(settings.authorizationStatus == UNAuthorizationStatusAuthorized);}];
#elif __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0callback([[UIApplication sharedApplication] isRegisteredForRemoteNotifications]);
#elseUIRemoteNotificationType type = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];callback(type != UIRemoteNotificationTypeNone);
#endif
}

3.iOS开发检测是否开启摄像头:

需要导入:

#import <AVFoundation/AVFoundation.h>

代码如下:

+ (void)openCaptureDeviceServiceWithBlock:(void(^)(BOOL))callback
{
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_0AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];if (authStatus == AVAuthorizationStatusNotDetermined) {[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {callback(granted);}];} else if (authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied) {callback(NO);} else {callback(YES);}
#endif
}

4.iOS开发检测是否开启相册:

需要导入:

#import <Photos/Photos.h>
#import <AssetsLibrary/AssetsLibrary.h>

代码如下:

+ (void)openAlbumServiceWithBlock:(void(^)(BOOL))callback
{BOOL isOpen;
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0PHAuthorizationStatus authStatus = [PHPhotoLibrary authorizationStatus];isOpen = YES;if (authStatus == PHAuthorizationStatusRestricted || authStatus == PHAuthorizationStatusDenied) {isOpen = NO;}
#elseALAuthorizationStatus author = [ALAssetsLibrary authorizationStatus];isOpen = YES;if (author == ALAuthorizationStatusRestricted 

这篇关于iOS常用权限是否开启判断的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

如何开启和关闭3GB模式

https://jingyan.baidu.com/article/4d58d5414dfc2f9dd4e9c082.html

Java面试八股之怎么通过Java程序判断JVM是32位还是64位

怎么通过Java程序判断JVM是32位还是64位 可以通过Java程序内部检查系统属性来判断当前运行的JVM是32位还是64位。以下是一个简单的方法: public class JvmBitCheck {public static void main(String[] args) {String arch = System.getProperty("os.arch");String dataM

JavaScript全屏,监听页面是否全屏

在JavaScript中,直接监听浏览器是否进入全屏模式并不直接支持,因为全屏API主要是关于请求和退出全屏模式的,而没有直接的监听器可以告知页面何时进入或退出全屏模式。但是,你可以通过在你的代码中跟踪全屏状态的改变来模拟这个功能。 以下是一个基本的示例,展示了如何使用全屏API来请求全屏模式,并在请求成功或失败时更新一个状态变量: javascriptlet isInFullscreen =

iOS HTTPS证书不受信任解决办法

之前开发App的时候服务端使用的是自签名的证书,导致iOS开发过程中调用HTTPS接口时,证书不被信任 - (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAu

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

Windows 可变刷新率是什么?如何开启?

在现代计算设备中,显示屏的刷新率对用户体验起着至关重要的作用。随着显示技术的不断进步,固定刷新率显示器逐渐被支持可变刷新率(Variable Refresh Rate, VRR)技术的显示器所取代。 可变刷新率定义 可变刷新率是什么?可变刷新率(VRR)是一种显示技术,它允许显示器的刷新率动态调整,以匹配显卡输出的帧率。传统的显示器通常具有固定的刷新率(如60Hz、75Hz等),这意味着显示器

Java研学-RBAC权限控制(八)

九 登录登出 1 登录作用   判断员工是否有权限访问,首先得知道现在操作的人是谁,所以必须先实现登录功能 2 登录流程   ① 提供登录页面,可输入用户名与密码信息,并添加执行登录的按钮。(登录页面不能被拦截)   ② 给按钮绑定点击事件(异步操作,POST请求)   ③ 事件中发送登录请求,使用 AJAX 方式提交。(使用 AJAX 原因:用户体验更好,既可保留用户刚输入的用户名和密码

开启青龙 Ninja 扫码功能失效后修改成手动填写CK功能【修正Ninja拉库地址】

国内:进入容器docker exec -it qinglong bash #获取ninjagit clone -b main https://ghproxy.com/https://github.com/wjx0428/ninja.git /ql/ninja#安装cd /ql/ninja/backend && pnpm install cp .env.example .env

帆软报表常用操作

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 帆软报表常用操作 多序号实现使用数据集作为参数空白页或者竖线页修改页面Title金额,或者保留两位小数等等设置日期格式显示图片使用公式 多序号实现 所用函数为SEQ(),如果一张报表中需要用到多个序号,那么就需要加入参数SEQ(1),SEQ(

常用MQ消息中间件Kafka、ZeroMQ和RabbitMQ对比及RabbitMQ详解

1、概述   在现代的分布式系统和实时数据处理领域,消息中间件扮演着关键的角色,用于解决应用程序之间的通信和数据传递的挑战。在众多的消息中间件解决方案中,Kafka、ZeroMQ和RabbitMQ 是备受关注和广泛应用的代表性系统。它们各自具有独特的特点和优势,适用于不同的应用场景和需求。   Kafka 是一个高性能、可扩展的分布式消息队列系统,被设计用于处理大规模的数据流和实时数据传输。它