Не удается получить доступ к микрофону в Chrome - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть видео-чат, встроенный в мой сайт с использованием 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);
      };
    });
  },[]);
...