Можно в Telegram мини апах один раз запросить разрешение на запись видео/аудио?
Ссылка скопирована
Нужно понять: есть ли варианты использовать основную камеру телефона в Telegram мини апах с запросом разрешения всего один раз?
Сейчас ситуация такая: сейчас, когда использую getUserMedia, то при каждом navigator.mediaDevices?.getUserMedia вызвается окно запроса разрешения. Так не нужно
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
Linux
Как диагностировать зависание RK3568 U-boot на Starting kernel?
1 ответ
Visual Studio Code
Как лучше убрать тень у панели слева в VS Code?
1 ответ

В Telegram Mini Apps разрешения на камеру/микрофон зависят от WebView, ОС и политики браузерного движка. Если вы каждый раз вызываете
navigator.mediaDevices.getUserMedia()заново, Telegram может каждый раз показывать запрос, особенно на iOS или при пересоздании WebView. Полностью гарантировать “один раз навсегда” нельзя.Что можно сделать: не запрашивать поток каждый раз. Получите stream один раз в рамках текущей сессии приложения и переиспользуйте его, пока пользователь находится в Mini App:
let mediaStream = null; async function getCamera() { if (mediaStream) return mediaStream; mediaStream = await navigator.mediaDevices.getUserMedia({ video: { facingMode: 'environment' }, audio: true }); return mediaStream; }let mediaStream = null; async function getCamera() { if (mediaStream) return mediaStream; mediaStream = await navigator.mediaDevices.getUserMedia({ video: { facingMode: 'environment' }, audio: true }); return mediaStream; }
Когда запись закончилась, не вызывайте
stop()на tracks, если планируете скоро записывать снова. Если остановите tracks, следующий запуск может снова запросить разрешение:mediaStream.getTracks().forEach(track => track.stop());
Эту команду вызывайте только когда пользователь реально закрывает камеру или выходит из сценария.
Также проверьте, что Mini App открывается по HTTPS и не перезагружает страницу между записями. Любой reload может сбросить состояние и привести к повторному запросу.
На Android поведение обычно мягче, на iOS Telegram WebView может быть строже. Встроенного Telegram API, который выдаёт постоянное разрешение на основную камеру для webapp без системного запроса, нет.
Итог: один запрос “навсегда” гарантировать нельзя. Но можно запросить stream один раз за сессию, хранить его, не останавливать tracks между короткими записями и избегать перезагрузки Mini App.