「Swift」系统权限授权状态判断

判断系统权限是否开启

1.定位权限

//引入头文件
import CoreLocation

//定位权限判断
switch CLLocationManager.authorizationStatus() {
case .denied :
//未授权
case .notDetermined :
//不确定
case .authorizedAlways :
//一直允许
case .authorizedWhenInUse :
//使用期间允许
case .restricted :
//受限的
}

2.相机权限

switch AVCaptureDevice.authorizationStatus(for: .video) {
case .denied :
//未授权
case .notDetermined :
//不确定
case .authorizedAlways :
//一直允许
case .authorizedWhenInUse :
//使用期间允许
case .restricted :
//受限的
}

3.相册权限

import Photos

switch PHPhotoLibrary.authorizationStatus() {
case .denied :
//未授权
case .notDetermined :
//不确定
case .authorizedAlways :
//一直允许
case .authorizedWhenInUse :
//使用期间允许
case .restricted :
//受限的

4.通知权限

import UserNotifications

UNUserNotificationCenter.current().getNotificationSettings { setting in
	switch setting.authorizationStatus {
	case .denied :
	//未授权
	case .notDetermined :
	//不确定
	case .authorizedAlways :
	//一直允许
	case .authorizedWhenInUse :
	//使用期间允许
	case .restricted :
	//受限的
}

5.蓝牙权限

import CoreBluetooth

switch CBPeripheralManager.authorization {
	case .denied :
	//未授权
	case .notDetermined :
	//不确定
	case .allowedAlways :
	//一直允许
	case .restricted :
	//受限的
}

6.网络权限

switch CTCellularData().cellularDataRestrictionDidUpdateNotifier {
	case .notRestricted:
	//无限制(允许无线局域网与蜂窝数据时)
	case .restricted:
	//受限的(仅允许无线局域网时、权限关闭时)
	case .restrictedStateUnknown:
	//受限状态未知的
}

ps:网络权限获取会较慢,需进行信号量进行异步操作获取,可使用下方方法进行获取当前网络权限

///判断网络是否有权限
    private func isNetworkPermissions() -> Bool {
        var isNetworkPermissions:Bool = false
        let cellularData = CTCellularData()
        ///线程信号量
        let semaphore = DispatchSemaphore(value: 0)
        
        cellularData.cellularDataRestrictionDidUpdateNotifier = { state in
            if state == .notRestricted {
                isNetworkPermissions = true
                
            } else  {
                isNetworkPermissions = false
            }
            
            semaphore.signal()
        }
        
        semaphore.wait()
        return isNetworkPermissions
    }

后续如果有其他权限判断,再进行添加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淡酒交魂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值