Microphone Permission: mahiyyəti, giriş növləri və işləmə prinsipi

Müəllif: IT Sectr Dərc olunub: 2026-05-21 Oxuma vaxtı: 8 dəq

Microphone Permission — bu proqramın cihazın mikrofonuna daxil olması üçün zəruri olan sistem icazəsidir. Audio yazmaq, səsli mesajlar göndərmək, video zənglər etmək və nitqin tanınması üçün tələb olunur. Apple Developer Documentation, 2024-ə əsasən, audio tutma istifadə edən bütün proqramlar sistem dialoqu vasitəsilə istifadəçinin açıq razılığını istəməlidir.

Əsas məqamlar

  • Microphone Permission — mobil cihazda audio yazan hər hansı proqram üçün məcburi icazədir.
  • Android API 23-dən etibarən Manifest.permission.RECORD_AUDIO-dan istifadə edərək iş vaxtı sorğusu aparır.
  • iOS Info.plist-də NSMicrophoneUsageDescription açarı və AVAudioSession.requestRecordPermission çağırışını tələb edir.
  • Mikrofonun aktivləşdirilməsi anında sorğu (Səsli mesaj yaz düyməsi) təsdiqlənmə şansını artırır.
  • Fonda işləmə mikrofonla əlavə icazələr və ciddi əsaslandırma tələb edir.

Microphone Permission-un mahiyyəti

Microphone Permission — cihazın mikrofonundan icazəsiz audio yazılmasının qarşısını alan məxfilik mühafizə mexanizmidir. Mobil platformalar mikrofonu ən həssas resurslardan biri hesab edir, çünki səs yazısı şəxsi söhbətləri, ətraf mühiti və məxfi məlumatları ələ keçirə bilər.

Android RECORD_AUDIO-nu təhlükəli icazə kimi təsnif edir, iOS isə Info.plist-də NSMicrophoneUsageDescription açarının məcburi əlavə edilməsini tələb edir. Hər iki platformada sorğu iş vaxtı yerinə yetirilir və istifadəçi istənilən vaxt sistem parametrləri vasitəsilə icazəni geri ala bilər. Sistem göstəricisi (iOS-da narıncı nöqtə, Android 12+-da yaşıl göstərici) istifadəçiyə proqramın hazırda mikrofondan istifadə etdiyini bildirir.

Pew Research Center (2024) tədqiqatına görə, mobil cihaz istifadəçilərinin 54%-i ən azı bir dəfə proqrama mikrofon girişini rədd edib. Əsas səbəb — proqramın niyə audio yazmağa ehtiyacı olduğunu anlamamalarıdır. Buna görə də tərtibatçı mikrofonun istifadə məqsədini mümkün qədər şəffaf şəkildə izah etməlidir.

Android-də mikrofon icazəsi

Android-də mikrofon icazəsi manifestdə RECORD_AUDIO-nun bəyan edilməsi və proqram kodunda iş vaxtı sorğusu vasitəsilə tələb olunur. Android 10-dan başlayaraq, mikrofon girişi əlavə olaraq fon proqramları üçün məhdudiyyətlərlə tənzimlənir.

AndroidManifest.xml-də bəyannamə

İlk addım — manifest faylında RECORD_AUDIO icazəsini bəyan etməkdir. Bu bəyannamə olmadan iş vaxtı sorğusu effektiv olmayacaq və proqram mikrofon girişini əldə edə bilməyəcək.

xml
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />

CAPTURE_AUDIO_OUTPUT üçüncü tərəf proqramları üçün əlçatmaz olan sistem icazəsidir. Yalnız sistem proqramları tərəfindən audio çıxışını tutmaq üçün istifadə olunur. Adi proqramlar mikrofonla yazmaq üçün yalnız RECORD_AUDIO-ya ehtiyac duyur.

Kotlin-də iş vaxtı sorğusu

Manifestdə bəyannamədən sonra iş vaxtı sorğusunu yerinə yetirmək lazımdır. AudioRecord-dan istifadə edərək mikrofonla audio yazma nümunəsinə baxaq.

kotlin
private val recordAudioPermission =
    registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
    if (granted) {
        startRecording()
    } else {
        showMicrophoneExplanation()
    }
}

fun startRecording() {
    val sampleRate = 44100
    val bufferSize = AudioRecord.getMinBufferSize(sampleRate,
        AudioFormat.CHANNEL_IN_MONO,
        AudioFormat.ENCODING_PCM_16BIT)
    val recorder = AudioRecord(MediaRecorder.AudioSource.MIC,
        sampleRate, AudioFormat.CHANNEL_IN_MONO,
        AudioFormat.ENCODING_PCM_16BIT, bufferSize)
    recorder.startRecording()
    // Audio məlumatların buferə yazılması
}

Yazma vəziyyətinin idarə edilməsi

Audio yazma həyat dövrünü düzgün idarə etmək vacibdir. Proqram Android 9 və daha yuxarı versiyalarda fon rejiminə keçdikdə, mikrofonla yazma sistem tərəfindən dayandırıla bilər. Android 10-dan başlayaraq, fonda mikrofon girişi əlavə olaraq məhdudlaşdırılıb: fon proqramı yazmağa başlaya bilməz, aktiv yazma isə dayandırılır. Fonda yazmaq üçün MediaProjection və ya bildirişli Service tələb olunur.

iOS-da mikrofon icazəsi

iOS-da mikrofon icazəsi Info.plist-də NSMicrophoneUsageDescription açarı və AVAudioSession.requestRecordPermission metodunun çağırışı vasitəsilə konfiqurasiya edilir. Apple sorğu dialoqunda mikrofonun istifadə səbəbinin məcburi göstərilməsini tələb edir.

Info.plist-in konfiqurasiyası

NSMicrophoneUsageDescription açarı mikrofon girişi tələb edən istənilən proqram üçün məcburidir. Olmadan proqram audio yazma cəhdində qəzaya uğrayacaq.

xml
<key>NSMicrophoneUsageDescription</key>
<string>Proqramın səsli qeydlər yazmaq və audio mesajlar göndərmək üçün mikrofon girişinə ehtiyacı var.</string>

Swift-də sorğu

iOS-da mikrofon girişi sorğusu AVAudioSession vasitəsilə yerinə yetirilir. Cavab alındıqdan sonra proqram audio sessiyanı konfiqurasiya edir və yazmağa başlayır.

swift
import AVFAudio

func requestMicrophoneAccess() {
    AVAudioSession.sharedInstance().requestRecordPermission { granted in
        DispatchQueue.main.async {
            if granted {
                self.configureAudioSession()
                self.startAudioRecording()
            } else {
                self.redirectToSettings()
            }
        }
    }
}

private func configureAudioSession() {
    let session = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(.playAndRecord, mode: .default)
        try session.setActive(true)
    } catch {
        print("Audio session error: \(error)")
    }
}

Yazma göstəricisi

iOS 14 və daha yuxarı versiyalarda mikrofondan istifadə edən proqram status çubuğunda narıncı göstərici göstərir. İstifadəçi hazırda hansı proqramın audio yazdığını görür. Proqram əsaslandırılmış səbəb olmadan fonda mikrofondan istifadə edərsə, Apple yeniləməni rədd edə bilər. AVAudioSession audio sessiyanın kateqoriyasını və rejimini konfiqurasiya etməyə, proqramın fon rejiminə keçərkən davranışını təyin etməyə imkan verir.

Audio tutma ssenariləri

Mikrofon istifadə ssenariləri mobil proqramlarda müxtəlifdir: sadə səs yazısından real vaxtda mürəkkəb audio axını emalına qədər.

Səsli mesajlar və qeydlər

Messencerlər və qeyd proqramları səsli mesaj yazmaq üçün mikrofondan istifadə edir. Bu halda Microphone Permission yazma düyməsi basıldıqda tələb olunur. Yazma bitdikdən sonra audio sessiyanı dayandırmaq vacibdir ki, digər proqramlar mikrofondan istifadə edə bilsin. AVAudioSession iOS-da və AudioManager Android-də audio fokusu idarə edir.

Nitqin tanınması

Səsli girişi olan proqramlar (axtarış, diktə, səsli köməkçilər) mikrofondan nitqin tanınması API-si ilə birlikdə istifadə edir. Android-də bu SpeechRecognizer android.speech-dən, iOS-da — SFSpeechRecognizer Speech framework-dən. Nitqin tanınması üçün tanınma xidmətlərinə giriş üçün əlavə icazə tələb oluna bilər (Android-də SPEECH, iOS-da SFSpeechRecognizer.requestAuthorization).

Video zənglər və streaming

Video zəng proqramları (WebRTC, Zoom, Telegram) Microphone Permission ilə yanaşı Camera Permission tələb edir. Bu kontekstdə hər iki icazəni eyni anda deyil, ardıcıl olaraq tələb etmək vacibdir ki, istifadəçi dialoqlarla yüklənməsin. WebRTC audio və video tutmaq üçün getUserMedia-dan istifadə edir, lakin mobil platformalarda əvvəlcədən sistem icazələri tələb olunur.

Audio sessiyasının konfiqurasiyası

Keyfiyyətli yazmaq üçün audio sessiya parametrlərini düzgün konfiqurasiya etmək tələb olunur. iOS-da .playAndRecord kateqoriyası eyni vaxtda səsi oxutmağa və yazmağa imkan verir. Android-də AudioSource.MIC seçimi əsas mikrofondan tutmağı təmin edir, AudioSource.VOICE_COMMUNICATION isə yazmanı səsli rabitə üçün optimallaşdırır. Əlavə olaraq, standart CD keyfiyyətinə nail olmaq üçün 44100 Hz seçmə tezliyi və PCM 16 bit formatı konfiqurasiya edilə bilər.

Yazma kəsilmələrinin idarə edilməsi

Audio yazma zamanı sistem kəsilmələri baş verə bilər: daxil olan zəng, həyəcan siqnalı, başqa proqramdan bildiriş. iOS-da AVAudioSessionDelegate beginInterruption və endInterruption-ı idarə edir. Android-də AudioManager.OnAudioFocusChangeListener proqrama audio fokusun itirilməsi və ya qaytarılması barədə məlumat verir. Kəsilmələrin düzgün idarə edilməsi gözlənilməz hadisələr zamanı yazmanı qorumağa və məlumat itkisinin qarşısını almağa imkan verir. Fokus itkisində yazmanı dayandırmaq və qayıtdıqdan sonra istifadəçiyə məlumat verərək bərpa etmək tövsiyə olunur.

Audio tutmanın optimallaşdırılması

Audio tutmanın optimallaşdırılması seçmə tezliyinin, bufer ölçüsünün və kodlaşdırma formatının konfiqurasiyasını əhatə edir. Səsli mesajlar üçün 44100 Hz tezlik və mono kanal kifayətdir. Nitqin tanınması üçün 16000 Hz tezlik tələb oluna bilər.

iOS-da yazma gecikməsini konfiqurasiya etmək üçün AVAudioSession.setPreferredIOBufferDuration-dan istifadə edin. Kiçik bufer gecikməni azaldır, lakin prosessora yükü artırır. Android-də AudioRecord.getMinBufferSize verilmiş parametrlər üçün minimum bufer ölçüsünü qaytarır. Sistem yüksək yüklü şəraitdə yazma zamanı məlumat itkisinin qarşısını almaq üçün bu minimumdan az olmayan buferdən istifadə etmək tövsiyə olunur.

Mikrofonla işləmək üçün ən yaxşı təcrübələr

Ən yaxşı təcrübələr Microphone Permission ilə işləmək istifadəçi etibarını artırmağa və platforma tələblərinə uyğunluğu təmin etməyə yönəlib.

Məqsədi yazmadan əvvəl izah edin

Microphone Permission tələb etməzdən əvvəl proqramın niyə mikrofona ehtiyacı olduğunu və yazmanın necə istifadə ediləcəyini izah edən ekran göstərin. Audionun serverə ötürülüb-ötürülmədiyini və ya lokal emal edildiyini qeyd edin. İstifadəçilər yazmanın cihazı tərk etmədiyini başa düşdükdə girişə daha tez-tez razılıq verirlər. Lokal emal (on-device ASR) etibar üçün güclü arqumentdir.

Fonda yazmanı dayandırın

Proqram fonda audio yazma tələb etmirsə, fon rejiminə keçərkən mikrofonu mütləq dayandırın. Bu təkcə batareyaya qənaət etmir, həm də yazma göstəricisini görən istifadəçinin mənfi reaksiyasının qarşısını alır. iOS-da yazmanı dayandırmaq üçün UIApplicationDelegate-in applicationDidEnterBackground metodlarından istifadə edin. Android-də Activity və ya Service-də onPause və onStop-u idarə edin.

Yazma göstəricilərindən istifadə edin

Audio tutma zamanı öz yazma göstəricinizi (animasiyalı mikrofon ikonu və ya dalğa) göstərin. Bu, istifadəçiyə mikrofonun aktiv olduğu barədə məlumat verir və mənfi reaksiya riskini azaldır. Apple və Google maksimum şəffaflıq üçün sistem göstəricisini öz UI elementinizlə təkrarlamağı tövsiyə edir.

Tez-tez verilən suallar

Səsi oxutmaq üçün Microphone Permission tələb olunur?

Xeyr, mikrofon icazəsi yalnız mikrofondan audio tutmaq üçün tələb olunur. Dinamik və ya qulaqlıq vasitəsilə səsi oxutmaq Microphone Permission tələb etmir. Oxutmaq üçün iOS-da audio sessiyanı və ya Android-də AudioTrack-i konfiqurasiya etmək kifayətdir.

Android-də Microphone Permission statusunu necə yoxlamaq olar?

ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO) istifadə edin. Metod PackageManager.PERMISSION_GRANTED və ya PERMISSION_DENIED qaytarır. Əlavə olaraq, PackageManager.hasSystemFeature vasitəsilə cihazda mikrofonun mövcud olub-olmadığını yoxlayın.

İstifadəçi Microphone Permission-dan imtina edərsə nə etməli?

Alternativ ssenari təklif edin: səsli əvəzinə mətn daxiletmə, audiosuz mesaj göndərmə, səssiz video izləmə. Əgər səsli giriş funksiyası vacibdirsə, sistem parametrlərində icazəni aktivləşdirmək üçün təlimat və keçid düyməsi olan ekran göstərin.

Android 12+-da Microphone Permission necə işləyir?

Android 12-dən başlayaraq, fonda olan proqram mikrofon girişini əldə edə bilməz. Aktiv yazma fon rejiminə keçərkən dayandırılır. Bundan əlavə, Privacy Chip göstəricisi — status çubuğunda proqramın mikrofondan istifadə etdiyini göstərən yaşıl ikon meydana çıxdı.

Niyə App Store Microphone Permission olan proqramı rədd etdi?

Ən çox rast gəlinən səbəblər: NSMicrophoneUsageDescription açarının olmaması, qeyri-spesifik səbəb təsviri ("səsli mesaj yazmaq" əvəzinə "xidməti yaxşılaşdırmaq üçün"), istifadəçinin aşkar hərəkəti olmadan icazə tələbi və ya əsaslandırılmış funksionallıq olmadan fonda mikrofondan istifadə etmək.

Nəticə

  • Microphone Permission — hər iki mobil platformada məcburi olan audio tutma üçün sistem icazəsidir.
  • Android RECORD_AUDIO-dan iş vaxtı sorğusu ilə və Android 10-dan etibarən fon giriş məhdudiyyəti ilə istifadə edir.
  • iOS Info.plist-də NSMicrophoneUsageDescription və səbəbin məcburi təsviri ilə AVAudioSession.requestRecordPermission çağırışını tələb edir.
  • Sistem göstəriciləri (iOS-da narıncı nöqtə, Android-də Privacy Chip) istifadəçiyə mikrofon aktivliyi barədə məlumat verir.
  • İstifadə ssenariləri səsli mesajlar, nitqin tanınması, video zənglər və audio yazmanı əhatə edir.
  • Fonda yazma hər iki platformada ciddi şəkildə məhdudlaşdırılıb və əlavə icazələr və əsaslandırma tələb edir.
  • İmtina halında alternativ ssenarilər (mətn daxiletmə, audiosuz göndərmə) proqramın düzgün işləməsi üçün məcburidir.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun