IOS 摄像头在 PWA 中无法工作,但在浏览器中可以工作

问题描述 投票:0回答:1

我在 iPhone 上使用相机 (getUserMedia) 时遇到问题。当在浏览器(safari)中使用它时,它工作得很好,但是一旦我将 pwa 添加到主屏幕,它就会停止工作。

我的代码设置:

<head>
    <link rel="manifest" href="manifest.json">
</head>
<body>
    <video id="video" width="200" height="200" autoplay playsinline muted crossorigin></video>
    <script>
        const video = document.getElementById('video');

        const events = [
          'play', 'waiting', 'loadstart', 'progress', 'suspend',
          'durationchange', 'loadedmetadata', 'loadeddata', 
          'canplay', 'playing', 'canplaythrough', 'timeupdate'
        ];

        events.forEach(e => {
          video.addEventListener(e, () => {
            console.log(`${e} event fired`);
          });
        });

        if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
            navigator.mediaDevices.getUserMedia({ video: true })
            .then(function(stream) {
                video.srcObject = stream;
                    video.onloadedmetadata = () => {
                        video.play();
                    };
                
            })
            .catch(function(error) {
                console.log("Something went wrong!", error);
            });
        }
    </script>
</body>

我的清单.json:

{ "name": "Test-App", "display": "standalone",...

如果我删除

"display:": "standalone"
(或全屏,没关系),视频流会再次工作...

我尝试查看视频元素正在触发哪些事件,如果 pwa 打开,则仅触发加载启动、进度和挂起(按顺序)事件。如果在浏览器中打开它,则会触发每个预期事件。没有错误,什么都没有......

javascript ios iphone html5-video progressive-web-apps
1个回答
0
投票

根据您测试的 iOS 版本,您的问题可能与 WebKit 中的此错误有关:在 PWA 中,HTML 视频元素可能无法播放来自“getUserMedia()”的流

虽然我自己没有测试过,但似乎在iOS 17+中已经解决了

© www.soinside.com 2019 - 2024. All rights reserved.