Кордова: getUserMedia () больше не работает на небезопасных источниках - PullRequest
0 голосов
/ 06 марта 2019

СИТУАЦИЯ

В моем гибридном приложении Cordova (создан на основе Quasar framework) мне нужно добавить функцию видеозвонка.

Мне нужно использовать функцию getUserMedia().

При тестировании на локальном хосте все работает нормально, но при тестировании на устройстве не работает.

ОШИБКА:

[Deprecation] getUserMedia() no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS.

Скорее всего, эта ошибка вызвана тем, что Cordova не работает по https.

ПОПЫТКИ:

Я перепробовал все, что могнайти в Google, но ничего не помогло ..

Пешеходный переход:

Я видел, как кто-то предлагал установить плагин crosswalk .Я пробовал, но ничего не изменилось.

Разрешения:

Я пытался запросить разрешение с помощью плагина android-permissions .

Но когда он запросил запрос, несмотря на нажатие кнопки ALLOW, было установлено разрешение DENIED_ALWAYS ...

Я попытался использовать диагностику Плагин Cordova, но результат был тот же

ВОПРОС:

Как я могу использовать getUserMedia() в приложении Cordova?

РЕДАКТИРОВАТЬ - РЕШЕНИЕ:

@ Андре решение является правильным решением вопроса.

Я получал эту ошибку при запуске приложения в среде разработчика на моем устройстве.Quasar запускает мой devServer на 192.168.0.18, который не совпадает с localhost, и поэтому не распознается как безопасный.

При установке https: true в конфигурации эта проблема была решена.

ПослеПри создании приложения Cordova запускается на file: //, а на протоколе file: // нет небезопасной проблемы происхождения, как указал @jcesarmobile в комментариях.

У меня все еще были проблемы со сборкой,но не связанные с этой проблемой, а связанные с разрешениями, и мне удалось решить их с помощью плагина cordova-plugin-android-permissions.

1 Ответ

1 голос
/ 06 марта 2019

Вы не можете.

Использование getUserMedia () больше не поддерживается через http: // (Unsecure Origin), оно будет работать только через https: // (Secure Origin)

  • Для целей разработки локальный хост рассматривается как безопасный источник через HTTP, поэтому, если вы можете запустить свой сервер с локального хоста, вы должны иметь возможность работать наэтот сервер.Вот почему это работает в вашем случае с использованием locahost.
  • Для производственных целей рассмотрите возможность использования HTTPS.Вы можете получить бесплатный SSL-сертификат , используя Let's encrypt .

. С помощью платформы Quasar вы можете использовать Webpack через HTTPS, отредактировав свой quasar.conf.js файл. Здесь разрешены параметры .

// quasar.conf.js
devServer: {
    https: true
}

Будет использоваться самозаверяющий сертификат.

Если вы хотите использовать свой собственный сертификат, используйте следующее:

// quasar.conf.js
devServer: {
  https: {
      key: fs.readFileSync('/path/to/server.key'),
      cert: fs.readFileSync('/path/to/server.crt'),
      ca: fs.readFileSync('/path/to/ca.pem'),
  }
}
...