← К заметкам

Заметки

navigator.mediaDevices is undefined при звонке в приложении

Если navigator.mediaDevices равен undefined, проверьте защищённый контекст страницы. На обычном HTTP браузер может вообще не предоставлять этот API.

console.log({
    secure_context: window.isSecureContext,
    media_devices: Boolean(navigator.mediaDevices),
    get_user_media: Boolean(navigator.mediaDevices?.getUserMedia)
});

Если API есть, но getUserMedia() отклоняется, это уже другой этап: посмотрите имя ошибки, разрешение микрофона и наличие устройства.

Во вложенном приложении также важна Permissions-Policy родительской страницы и разрешение для iframe. Приложение не может само отменить запрет родителя.

Открытие той же страницы отдельно помогает отделить проблему встраивания от HTTPS или устройства. Но доступный микрофон ещё не доказывает, что работает телефония: сигнализация и передача аудио проверяются дальше.

Документация: MDN: getUserMedia.