Камера не работает на iOS, ошибка в getUserMedia

Я пытаюсь понять, и я почти уверен, что проблема не в том, что он мне говорит.

Я создаю PWA с Vue.js. Когда я запускаю камеру, она не работает на iOS (v11+). Я пробовал много вариантов, но понятия не имел, что происходит и как правильно отлаживать скомпилированный код в инструменте разработчика Safari (точки останова просто не будут работать).

вот код:

async init () {

    // Media Device settings
    const constraints = {
      audio: false,
      video: {
        facingMode: (this.camera.mode === 'front') ? 'user' : { exact: 'environment' },
        width: this.camera.size.width,
        height: this.camera.size.height
      }
    }

    try {
      const stream = await navigator.mediaDevices.getUserMedia(constraints)
      this.tracks = stream.getVideoTracks()
      this.video.srcObject = stream

      // Toggle the camera state
      this.toggleCamera(true)

      // Check for realtime validation
      if (this.realtime) {
        this.validatePhotoRealtime()
      }
    } catch (e) {
      this.handleErrorMessage(`getUserMedia error: ${e.name}`, e)
    }
  }

И вот что я получаю в окне консоли:

Trying to call getUserMedia from an insecure document.

введите здесь описание изображения

Любая идея, как отладить эту ошибку?

==== ОБНОВЛЕНИЕ ====

При разработке на локальном хосте и отсутствии HTTPS для среды разработки выполнение yarn server и подключение к обслуживаемому IP-адресу по сети

введите здесь описание изображения

Я включил параметр для WebRTC: введите здесь описание изображения

Но это не помогает.


person aspirinemaga    schedule 27.09.2018    source источник
comment
Вы должны обслуживать приложение через https.   -  person DigitalDrifter    schedule 27.09.2018
comment
@DigitalDrifter - вопрос обновлен! раньше это работало с той же конфигурацией, что и в моем блоке вопросов. Но вдруг это прекратилось.   -  person aspirinemaga    schedule 27.09.2018
comment
Вы смешиваете http и https? такая ошибка обычно возникает, когда вы делаете это, например, главная страница находится на https, и вы пытаетесь перейти к библиотеке по http-маршруту, это не удастся.   -  person Erubiel    schedule 28.09.2018


Ответы (2)


К сожалению, Apple не разрешает использовать WebRTC, когда вы используете свое приложение в качестве PWA. Взгляните на эти ссылки.

getUserMedia() в PWA на iOS 11.3.1

https://github.com/webrtc/samples/issues/933

person Giorgos Papageorgiou    schedule 03.10.2018
comment
Спасибо, я проверю это, но я верю, что это работает. Я сделал страницу репозитория github для этого, проверьте это на iPhone. danieltorscho.github.io/vue-pwa-camera Даже в режиме manifest standalone это работал. - person aspirinemaga; 03.10.2018
comment
Я пробовал, и это не сработало, вероятно, проблема с start_url. Я получаю 404, когда я открываю его как PWA. Посмотрите, если у вас получилось, мне очень интересно!! - person Giorgos Papageorgiou; 03.10.2018

В последней версии сафари вы можете разрешить небезопасные сайты из окна веб-инспектора. См. этот ответ: https://stackoverflow.com/a/59770868/2440064

person Hugo Mallet    schedule 17.01.2020