1.背景
macOS 10.14增加了對(duì)麥克風(fēng)和攝像機(jī)的訪(fǎng)問(wèn)授權(quán),在訪(fǎng)問(wèn)時(shí)會(huì)彈框請(qǐng)求授權(quán)。

image
2.主動(dòng)請(qǐng)求授權(quán)
如果在訪(fǎng)問(wèn)到麥克風(fēng)和攝像機(jī)的時(shí)候再?gòu)棾鍪跈?quán),可能有點(diǎn)晚,我們可以在A(yíng)pp啟動(dòng)的時(shí)候就主動(dòng)提示授權(quán)。
在工程的info.plist里面加上麥克風(fēng)和攝像機(jī)的訪(fǎng)問(wèn)說(shuō)明的Key:
Privacy - Camera Usage Description
Privacy - Microphone Usage Description
Value可以寫(xiě)上要訪(fǎng)問(wèn)的原因,不想寫(xiě)空著也行。

image
代碼如下:
// macos 10.14以上系統(tǒng)才執(zhí)行
if(@available(macos 10.14, *))
{
// 請(qǐng)求攝像機(jī)授權(quán),v如果是麥克風(fēng)的話(huà)參數(shù)是AVMediaTypeAudio.
switch ([AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo])
{
case AVAuthorizationStatusAuthorized:
{
// 已經(jīng)授權(quán)同意.
[self setupCaptureSession];
break;
}
case AVAuthorizationStatusNotDetermined:
{
// 從未處理過(guò)授權(quán)
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
if (granted) {
[self setupCaptureSession];
}
}];
break;
}
case AVAuthorizationStatusDenied:
{
// 授權(quán)拒絕
return;
}
case AVAuthorizationStatusRestricted:
{
// 家長(zhǎng)管制等
return;
}
}
}
重置授權(quán)狀態(tài)
tccutil reset Microphone
tccutil reset Camera
tccutil reset Microphone app_Identifier
tccutil reset Camera app_Identifier