getUserMedia в PWA с манифестом на iOS 11 - PullRequest
0 голосов
/ 11 июня 2018

Я создал PWA, который использует getRserMedia WebRTC для получения живого потока с камеры.PWA использует manifest.json и отлично работает на Android.

Однако на iOS приложение также работает, если я открою ссылку непосредственно в Mobile Safari, но если я добавлю ее на домашний экран, она не определена(поскольку iOS допускает это только в контексте Safari).

В качестве обходного пути я хотел бы открыть приложение в Mobile Safari вместо полноэкранного режима, но я не знаю, как это сделать, так какон автоматически открывает полноэкранный режим, как только обнаруживает manifest.json.

У кого-нибудь есть идея, как открыть приложение с манифестом в Safari?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 20 августа 2018

Я выясняю это, добавив два файла manifest.json, один из которых используется по умолчанию для устройств не ios, а другой - для устройств ios. Я также создаю сценарий Detect.js для определения того, получает ли устройство ios доступ к pwa и изменениям.ссылка на manifest.json в html.Есть код:

// Detects if device is on iOS 
const isIos = () => {
    const userAgent = window.navigator.userAgent.toLowerCase();
    return /iphone|ipad|ipod/.test( userAgent );
  }

// change manifest.json
if (isIos()) {
    document.getElementById("manifest").href = "ios-manifest.json";
}
0 голосов
/ 23 октября 2018

Я бы предложил вам установить apple-mobile-web-app-capable в no с этим метатегом в заголовке документа:

<meta name="apple-mobile-web-app-capable" content="no">

Это позволит iOS не понимать ваше веб-приложение как PWA.

0 голосов
/ 14 июня 2018

Существует способ открыть PWA, избегая полноэкранного режима.В файле manifest.json измените атрибут отображения на «браузер».

«дисплей»: «браузер»

См. Эту документацию в разделе «Дисплей».Вы также можете рассмотреть вариант «минимального пользовательского интерфейса».Пожалуйста, имейте в виду, что когда вы сделаете это изменение, оно будет отражаться не только в iOS, но и в Android.

Что касается проблемы доступа к getUserMeida, я не понимаю, почему он не работает в полноэкранном режиме.Это просто функция HTML5 и ничего особенного для PWA.Так что в идеале он должен работать и в полноэкранном режиме.Попробуйте зафиксировать любую ошибку при открытии в полноэкранном режиме и опубликуйте ее здесь, если обнаружите.Это также может быть связано с разрешениями, и я рекомендую решить проблему в полноэкранном режиме для лучшего взаимодействия с пользователем.

...