我们的网站执行了一系列定时操作,最终导致用户使用自己的麦克风录制某些东西。因为我们不想通过浏览器的“ our-domain.com想要访问麦克风[取消] [允许]”消息来中断此过程,所以我们以getUserMedia
调用开始,因此当用户使用时弹出首先单击“开始”。
在大多数浏览器和设备上都可以正常工作。但是,在iOS上的Safari上似乎超时。如果网站开始录制之前的一系列操作很短(例如30秒),则一切正常。但是,如果一系列操作稍长一些(例如90秒),则权限对话框会再次弹出。
我有两个问题:
1)此行为是否记录在任何地方?我似乎找不到任何东西。是否设置了超时时间或设备可以自由设置自己的超时时间?
2)您对如何处理此案有任何建议吗?我发生的两件事是
a)每20秒ping getUserMedia
一次以防止超时或
b)只是在过程开始时才开始录制,但只有在我们准备就绪时才开始保存录制。
第一个解决方案的问题是,某些浏览器具有“记住此决定”复选框,如果未选中该复选框,则每次我ping操作时都会导致弹出窗口。
第二种解决方案的问题是,当开始录制时,红色麦克风出现在浏览器中,因此用户认为我们已经开始录制。
我在iOS 12中有相同的问题。显然,iOS 13上的Safari可以记住并允许用户控制每个网站的权限设置。
看看此评论:https://stackoverflow.com/a/57368061/9522511
在Apple的官方网站上:https://www.apple.com/au/ios/ios-13/features/Safari->每站点设置
如果更新操作系统不适合您的情况,那么仅在Safari上执行选项a)怎么办?