簡體   English   中英

如何檢測用戶在iOS上授予麥克風權限?

[英]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;
}

如果使用尚未獲得您的許可,請執行以下操作:

  1. 首先,顯示彈出對話框
  2. 在OP中運行您的代碼

-

if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission)]) {
    [[AVAudioSession sharedInstance] requestRecordPermission];
    // Now run your function
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM