Захват голосовых сообщений больше не работает независимо от защищенного контекста / HTTPS на мобильном - PullRequest
0 голосов
/ 26 апреля 2019

Я создаю веб-приложение для планирования встреч (например, календарь), которое позволяет пользователям оставлять голосовые сообщения (объяснения) в определенные моменты времени, которые другие могут извлекать удаленно по своему усмотрению.Он хорошо работает на ПК, но я больше не могу заставить его работать на мобильных телефонах.Очевидно, что существуют новые стандарты контекста безопасности (WebRTC?), И необходимо предоставить безопасный контекст, но хотя я использую HTTPS (сайт / домен SSL), я не могу заставить его работать ни в одном из основных браузеров.Как еще я могу предоставить такой безопасный контекст?

Код, который я прилагаю, довольно популярен и хорошо работает (он все еще работает на ноутбуках!).Что я могу сделать, чтобы обеспечить правильный контекст на мобильных телефонах (IOS, Android, планшеты)?Спасибо за любую помощь.

navigator.mediaDevices.getUserMedia(constraints).then(function(stream) {
        //console.log("getUserMedia() success, stream created, initializing Speakit_recorder.js ...");
        audioContext = new AudioContext();
        //update the format 
        /*  assign to gumStream for later use  */
        gumStream = stream;
        /* use the stream */
        input = audioContext.createMediaStreamSource(stream);
        /* Create the Recorder object, configure to record mono sound(1channel). Recording 2channels  will double the file size */
        rec = new Recorder(input,{numChannels:2})
        //start the recording process                       
        rec.record();
        //console.log("Recording started");
}).catch(function(err) {                
        //do whatever is necesssary if getUserMedia() fails
});

1 Ответ

0 голосов
/ 26 апреля 2019

Это может быть связано с изменениями автозапуска, появившимися в Chrome 71. Подробнее см. https://developers.google.com/web/updates/2017/09/autoplay-policy-changes, а также https://bugs.chromium.org/p/chromium/issues/detail?id=835767.

Возможно, вы захотите зарегистрировать audioContext.state «работает». Если нет, вам нужно вызвать audioContext.resume () для действия пользователя (например, нажатия кнопки)

...