[英]How to detect user giving microphone permission on iOS?
所以我需要在用戶給出(或拒絕)使用麥克風的權限后調用某個函數。
我已經看到了這個:
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
if (granted) {
// Microphone enabled code
[self someFunction];
}
else {
// Microphone disabled code
}
}];
但是,這僅用於檢測當前狀態。
如果當前狀態為“no”並且彈出窗口顯示且用戶提供權限 - 則不會調用該函數。 那是因為在執行此操作的那一刻,權限是“否”,直到我們下次運行代碼時才會調用該函數。
我想要做的是在用戶按下“允許”或“拒絕”后調用一個函數。
誰知道怎么做?
編輯:忘了提它它必須是iOS 7.0兼容的解決方案。
在iOS 8中引入的AVAudioSession方法是recordPermission 。 這將返回名為AVAudioSessionRecordPermission的枚舉。 您可以使用開關來確定是否已向用戶顯示權限警報。 這樣,只有在沒有呈現給用戶時才調用requestRecordPermission ,因此權限塊可以假定在用戶第一次允許或不允許權限之后執行它。
一個例子是 - 像 -
AVAudioSessionRecordPermission permissionStatus = [[AVAudioSession sharedInstance] recordPermission];
switch (permissionStatus) {
case AVAudioSessionRecordPermissionUndetermined:{
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
// CALL YOUR METHOD HERE - as this assumes being called only once from user interacting with permission alert!
if (granted) {
// Microphone enabled code
}
else {
// Microphone disabled code
}
}];
break;
}
case AVAudioSessionRecordPermissionDenied:
// direct to settings...
break;
case AVAudioSessionRecordPermissionGranted:
// mic access ok...
break;
default:
// this should not happen.. maybe throw an exception.
break;
}
如果使用尚未獲得您的許可,請執行以下操作:
-
if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission)]) {
[[AVAudioSession sharedInstance] requestRecordPermission];
// Now run your function
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.