Microphone Permission: суть, типи доступу та принцип роботи

Автор: IT Sectr Опубліковано: 2026-05-21 Час читання: 8 хв

Microphone Permission — це системний дозвіл, необхідний додатку для доступу до мікрофона пристрою. Він потрібен для запису аудіо, голосових повідомлень, відеодзвінків та розпізнавання мови. За даними Apple Developer Documentation, 2024, всі додатки, що використовують аудіозахоплення, зобов'язані запитувати явну згоду користувача через системний діалог.

Головне

  • Microphone Permission — обов'язковий дозвіл для будь-якого додатка, що записує аудіо на мобільному пристрої.
  • Android використовує Manifest.permission.RECORD_AUDIO із запитом під час виконання починаючи з API 23.
  • iOS вимагає ключ NSMicrophoneUsageDescription в Info.plist та виклик AVAudioSession.requestRecordPermission.
  • Запит у момент активації мікрофона (кнопка «Записати голосове повідомлення») підвищує шанси на схвалення.
  • Робота у фоні з мікрофоном вимагає додаткових дозволів та суворого обґрунтування.

Суть Microphone Permission

Microphone Permission — це механізм захисту конфіденційності, який запобігає несанкціонованому запису аудіо з мікрофона пристрою. Мобільні платформи відносять мікрофон до найбільш чутливих ресурсів, оскільки запис звуку може захоплювати особисті розмови, навколишнє середовище та конфіденційну інформацію.

Android класифікує RECORD_AUDIO як небезпечний дозвіл, а iOS вимагає обов'язкового додавання ключа NSMicrophoneUsageDescription в Info.plist. На обох платформах запит виконується під час виконання, а користувач може будь-коли відкликати дозвіл через системні налаштування. Системний індикатор запису (помаранчева точка на iOS, зелений індикатор на Android 12+) сигналізує користувачеві про те, що додаток використовує мікрофон у даний момент.

За даними дослідження Pew Research Center (2024), 54% користувачів мобільних пристроїв хоча б раз відмовляли додатку в доступі до мікрофона. Основна причина — нерозуміння, навіщо додатку запис аудіо. Тому розробнику необхідно максимально прозоро пояснювати мету використання мікрофона.

Дозвіл на мікрофон на Android

Дозвіл на мікрофон на Android запитується через оголошення RECORD_AUDIO в маніфесті та запит під час виконання в коді додатка. Починаючи з Android 10, доступ до мікрофона додатково регулюється обмеженнями для фонових додатків.

Оголошення в AndroidManifest.xml

Перший крок — оголосити дозвіл RECORD_AUDIO у файлі маніфесту. Без цього оголошення запит під час виконання не матиме ефекту, і додаток не зможе отримати доступ до мікрофона.

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

CAPTURE_AUDIO_OUTPUT — це системний дозвіл, недоступний стороннім додаткам. Він використовується лише системними додатками для захоплення аудіовиходу. Звичайним додаткам достатньо RECORD_AUDIO для запису з мікрофона.

Запит під час виконання на Kotlin

Після оголошення в маніфесті необхідно виконати запит під час виконання. Розглянемо приклад з використанням AudioRecord для запису аудіо з мікрофона.

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()
    // Запис аудіоданих у буфер
}

Обробка стану запису

Важливо коректно обробляти життєвий цикл запису аудіо. При переході додатка в фоновий режим на Android 9 і вище запис з мікрофона може бути призупинений системою. Починаючи з Android 10, фоновий доступ до мікрофона додатково обмежений: додаток у фоні не може почати запис, а активний запис призупиняється. Для фонового запису потрібен MediaProjection або Service з повідомленням.

Дозвіл на мікрофон на iOS

Дозвіл на мікрофон на iOS налаштовується через ключ NSMicrophoneUsageDescription в Info.plist та виклик методу AVAudioSession.requestRecordPermission. Apple вимагає обов'язкового зазначення причини використання мікрофона в діалозі запиту.

Налаштування Info.plist

Ключ NSMicrophoneUsageDescription обов'язковий для будь-якого додатка, який запитує доступ до мікрофона. Без нього додаток аварійно завершиться при спробі запису аудіо.

xml
<key>NSMicrophoneUsageDescription</key>
<string>Додатку потрібен доступ до мікрофона для запису голосових нотаток і надсилання аудіоповідомлень.</string>

Запит на Swift

Запит доступу до мікрофона на iOS виконується через AVAudioSession. Після отримання відповіді додаток налаштовує аудіосесію та починає запис.

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)")
    }
}

Індикатор запису

На iOS 14 і вище додаток, що використовує мікрофон, відображає помаранчевий індикатор у рядку стану. Користувач бачить, який додаток у даний момент записує аудіо. Якщо додаток використовує мікрофон у фоні без вагомої причини, Apple може відхилити оновлення. AVAudioSession дозволяє налаштувати категорію та режим аудіосесії, визначаючи поведінку додатка при переході в фоновий режим.

Сценарії захоплення аудіо

Сценарії використання мікрофона в мобільних додатках різноманітні: від простого запису голосу до складної обробки аудіопотоку в реальному часі.

Голосові повідомлення та нотатки

Месенджери та додатки для нотаток використовують мікрофон для запису голосових повідомлень. У цьому випадку Microphone Permission запитується при натисканні кнопки запису. Після завершення запису важливо зупинити аудіосесію, щоб інші додатки могли використовувати мікрофон. AVAudioSession на iOS та AudioManager на Android керують фокусом аудіо.

Розпізнавання мови

Додатки з голосовим введенням (пошук, диктування, голосові помічники) використовують мікрофон у зв'язці з API розпізнавання мови. На Android це SpeechRecognizer з android.speech, на iOS — SFSpeechRecognizer з Speech framework. Для розпізнавання мови може знадобитися додатковий дозвіл на доступ до сервісів розпізнавання (SPEECH на Android, SFSpeechRecognizer.requestAuthorization на iOS).

Відеодзвінки та стрімінг

Додатки для відеодзвінків (WebRTC, Zoom, Telegram) запитують Microphone Permission одночасно з Camera Permission. У цьому контексті важливо запитувати обидва дозволи послідовно, а не одночасно, щоб користувач не був перевантажений діалогами. WebRTC використовує getUserMedia для захоплення аудіо та відео, але на мобільних платформах попередньо потрібні системні дозволи.

Налаштування аудіосесії

Для якісного запису потрібно правильно налаштувати параметри аудіосесії. На iOS категорія .playAndRecord дозволяє одночасно відтворювати та записувати звук. На Android вибір AudioSource.MIC забезпечує захоплення з основного мікрофона, а AudioSource.VOICE_COMMUNICATION оптимізує запис для голосового зв'язку. Додатково можна налаштувати частоту дискретизації 44100 Гц та формат PCM 16 біт для досягнення стандартної якості CD.

Обробка переривань запису

При записі аудіо можуть виникати системні переривання: вхідний дзвінок, спрацьовування будильника, сповіщення від іншого додатка. На iOS AVAudioSessionDelegate обробляє beginInterruption та endInterruption. На Android AudioManager.OnAudioFocusChangeListener сповіщає додаток про втрату або повернення аудіофокусу. Коректна обробка переривань дозволяє зберегти запис при неочікуваних подіях та уникнути втрати даних. Рекомендується призупиняти запис при втраті фокусу та відновлювати після його повернення з повідомленням користувача.

Оптимізація захоплення аудіо

Оптимізація захоплення аудіо включає налаштування частоти дискретизації, розміру буфера та формату кодування. Для голосових повідомлень достатньо частоти 44100 Гц та моно-каналу. Для розпізнавання мови може знадобитися частота 16000 Гц.

На iOS використовуйте AVAudioSession.setPreferredIOBufferDuration для налаштування затримки запису. Менший буфер знижує затримку, але збільшує навантаження на процесор. На Android AudioRecord.getMinBufferSize повертає мінімальний розмір буфера для заданих параметрів. Рекомендується використовувати буфер не менше цього мінімуму для запобігання втраті даних при записі в умовах високого навантаження на систему.

Найкращі практики роботи з мікрофоном

Найкращі практики роботи з Microphone Permission спрямовані на підвищення довіри користувача та відповідність вимогам платформ.

Пояснюйте мету до запису

Перед запитом Microphone Permission покажіть екран, на якому поясніть, навіщо додатку мікрофон і як буде використовуватися запис. Вкажіть, чи передається аудіо на сервер або обробляється локально. Користувачі значно частіше погоджуються на доступ, якщо розуміють, що запис не покидає пристрій. Локальна обробка (on-device ASR) — сильний аргумент на користь довіри.

Припиняйте запис у фоні

Якщо додаток не вимагає фонового запису аудіо, обов'язково зупиняйте мікрофон при переході в фоновий режим. Це не тільки економить батарею, але й запобігає негативній реакції користувача, який побачив індикатор запису. На iOS використовуйте методи UIApplicationDelegate applicationDidEnterBackground для призупинення запису. На Android обробляйте onPause та onStop в Activity або Service.

Використовуйте індикатори запису

Показуйте власний індикатор запису (анімовану іконку мікрофона або хвилю) під час захоплення аудіо. Це інформує користувача про те, що мікрофон активний, і знижує ризик негативної реакції. Apple та Google рекомендують дублювати системний індикатор власним UI-елементом для максимальної прозорості.

Часті запитання

Чи потрібен Microphone Permission для відтворення звуку?

Ні, дозвіл на мікрофон потрібен тільки для захоплення аудіо з мікрофона. Відтворення звуку через динамік або навушники не потребує Microphone Permission. Для відтворення достатньо налаштувати аудіосесію на iOS або AudioTrack на Android.

Як перевірити статус Microphone Permission на Android?

Використовуйте ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO). Метод повертає PackageManager.PERMISSION_GRANTED або PERMISSION_DENIED. Додатково перевірте, чи доступний мікрофон на пристрої через PackageManager.hasSystemFeature.

Що робити, якщо користувач відмовив у Microphone Permission?

Запропонуйте альтернативний сценарій: текстовий ввід замість голосового, надсилання повідомлення без аудіо, перегляд відео без звуку. Якщо функція голосового вводу критична, покажіть екран з інструкцією щодо ввімкнення дозволу в системних налаштуваннях та кнопкою переходу.

Як працює Microphone Permission на Android 12+?

Починаючи з Android 12, додаток у фоні не може отримати доступ до мікрофона. Активний запис призупиняється при переході в фоновий режим. Крім того, з'явився індикатор Privacy Chip — зелена іконка в рядку стану, яка показує, що додаток використовує мікрофон.

Чому App Store відхилив додаток з Microphone Permission?

Найпоширеніші причини: відсутність ключа NSMicrophoneUsageDescription, неконкретний опис причини («для покращення сервісу» замість «для запису голосових повідомлень»), запит дозволу без явної дії користувача або використання мікрофона у фоні без обґрунтованої функціональності.

Підсумки

  • Microphone Permission — системний дозвіл для захоплення аудіо, обов'язковий на обох мобільних платформах.
  • Android використовує RECORD_AUDIO із запитом під час виконання та обмеженням фонового доступу починаючи з Android 10.
  • iOS вимагає NSMicrophoneUsageDescription в Info.plist та виклику AVAudioSession.requestRecordPermission з обов'язковим описом причини.
  • Системні індикатори (помаранчева точка на iOS, Privacy Chip на Android) інформують користувача про активність мікрофона.
  • Сценарії використання включають голосові повідомлення, розпізнавання мови, відеодзвінки та аудіозапис.
  • Фоновий запис суворо обмежений на обох платформах і потребує додаткових дозволів та обґрунтування.
  • Альтернативні сценарії при відмові (текстовий ввід, надсилання без аудіо) обов'язкові для коректної роботи додатка.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також