Можно в Telegram мини апах один раз запросить разрешение на запись видео/аудио?

Ссылка скопирована
1 ответ

Нужно понять: есть ли варианты использовать основную камеру телефона в Telegram мини апах с запросом разрешения всего один раз?

Сейчас ситуация такая: сейчас, когда использую getUserMedia, то при каждом navigator.mediaDevices?.getUserMedia вызвается окно запроса разрешения. Так не нужно

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Backend-редакция Ответ

В 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());

mediaStream.getTracks().forEach(track => track.stop());

Эту команду вызывайте только когда пользователь реально закрывает камеру или выходит из сценария.

Также проверьте, что Mini App открывается по HTTPS и не перезагружает страницу между записями. Любой reload может сбросить состояние и привести к повторному запросу.

На Android поведение обычно мягче, на iOS Telegram WebView может быть строже. Встроенного Telegram API, который выдаёт постоянное разрешение на основную камеру для webapp без системного запроса, нет.

Итог: один запрос “навсегда” гарантировать нельзя. Но можно запросить stream один раз за сессию, хранить его, не останавливать tracks между короткими записями и избегать перезагрузки Mini App.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно