Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在iOS Safari中,getUserMedia的权限在一分钟内超时_Javascript_Ios_Safari_Getusermedia - Fatal编程技术网

Javascript 在iOS Safari中,getUserMedia的权限在一分钟内超时

Javascript 在iOS Safari中,getUserMedia的权限在一分钟内超时,javascript,ios,safari,getusermedia,Javascript,Ios,Safari,Getusermedia,我们的网站做了一系列定时动作,最终用户用麦克风录制了一些东西。因为我们不想用浏览器的“our-domain.com想访问麦克风[cancel][allow]”消息来中断这个过程,所以我们从一个getUserMedia调用开始,这样当用户第一次单击“start”时就会出现弹出窗口 这在大多数浏览器和设备中都可以正常工作。然而,在iOS上的Safari上,似乎有一个超时。如果网站开始录制之前的一系列动作很短(比如30秒),那么一切都正常。但是,如果一系列操作稍长一点(如90秒),权限对话框将再次弹出

我们的网站做了一系列定时动作,最终用户用麦克风录制了一些东西。因为我们不想用浏览器的“our-domain.com想访问麦克风[cancel][allow]”消息来中断这个过程,所以我们从一个
getUserMedia
调用开始,这样当用户第一次单击“start”时就会出现弹出窗口

这在大多数浏览器和设备中都可以正常工作。然而,在iOS上的Safari上,似乎有一个超时。如果网站开始录制之前的一系列动作很短(比如30秒),那么一切都正常。但是,如果一系列操作稍长一点(如90秒),权限对话框将再次弹出

我有两个问题:

1) 这种行为是否有记录在案?我似乎找不到关于它的任何东西。是否有设置的超时,或者设备是否可以自由设置自己的超时

2) 你对如何处理这个案子有什么建议吗?我想到的两件事是

a) 每20秒ping一次
getUserMedia
,以防止超时或

b) 只需在流程开始时开始录制,但仅在准备好录制时才开始保存录制

第一种解决方案的问题是,一些浏览器有一个“记住这个决定”复选框,如果没有选中,这将导致每次我ping时弹出窗口


第二种解决方案的问题是,当录制开始时,浏览器中会出现红色麦克风,因此用户认为我们已经开始录制。

我在iOS 12上也有同样的问题。 显然,iOS 13上的Safari可以记住并允许用户控制每个网站的权限设置

请看下面的评论:

在苹果官方网站上: Safari->按站点设置


如果更新操作系统不适合您的情况,那么只在Safari上执行选项a)怎么样?

您找到解决方法了吗?我遇到了一个类似的问题,虽然在我的例子中,我在后台播放媒体,如果我ping getUserMedia,它会挂起。我做了选项“b”-在用户批准后立即开始录制,但只有在用户单击“录制”时才开始捕获。这并不理想,但当所有的旧iPhone速度过慢时,问题最终会消失。