У меня есть видео-чат, встроенный в мой сайт с использованием IFrame.
<Iframe
url={"https://video.com"}
width="100%"
height="450px"
id="myId"
display="initial"
position="relative"
allow="fullscreen; camera; microphone"
className="single-room__chat"
/>
Он получает все необходимые разрешения.
Он отлично работал в течение нескольких дней, поэтому я знаю, код правильный.
Я начал возиться с прослушиванием разрешений на доступ к другим вещам в моем приложении, поэтому я удалил все предоставленные разрешения для своего сайта pubi c и своего локального хоста. Теперь после изменения я смог снова дать разрешение на камеру, но у mi c его нет. Он даже не просит меня об этом. Встроенный сайт просто говорит, что не может получить доступ к mi c (что обычно и происходит до того, как я дал ему разрешения.
Я очистил все данные localhost и моего publi c сайта от История Chrome. Я даже хочу встроенный сайт и удостоверился, что я дал ему разрешения там. Ничего не помогает.
Как я могу сказать Chrome, что я даю разрешение сайту, если он не спрашивает меня об этом? Могу ли я запрограммировать что-то, что будет отображаться в запросе разрешения?
Это новый код, с которым я связывался, но даже когда он отключен, я все еще сталкиваюсь с этой проблемой:
useEffect(() => {
navigator.permissions
.query({ name: "microphone" })
.then((permissionStatus) => {
console.log("minemicrophone", permissionStatus.state); // granted, denied, prompt
permissionStatus.onchange = function () {
console.log("minemicrophone", "Permission changed to " + this.state);
if (this.state === "granted") setMicrophonePermissionGranted(true);
};
});
navigator.permissions.query({ name: "camera" }).then((permissionStatus) => {
console.log("minecamera", permissionStatus.state); // granted, denied, prompt
permissionStatus.onchange = function () {
console.log("minecamera", "Permission changed to " + this.state);
if (this.state === "granted") setCameraPermissionGranted(true);
};
});
},[]);