javascript - Chrome 中的 OpenTok accessDenied 问题

标签 javascript google-chrome opentok tokbox

我在使用 OpenTok 2 API 时遇到了一些问题.当我开始发布流时,系统提示我允许或拒绝该网站使用我的网络摄像头和麦克风,如果我允许,allowed() 应该运行,但如果我拒绝,则 denied() 应该运行。

publisher.addEventListener('accessAllowed', allowed);
publisher.addEventListener('accessDenied', denied);

function allowed() {
    console.log('Allowed');
}

function denied() {
    console.log('Denied');
}

它在 Firefox 中按预期工作。在 Chrome 中,accessAllowed 有效,但 accessDenied 无效。相反,我收到以下错误:

OT.Publisher.onStreamAvailableError PermissionDeniedError:
TB.exception :: title: Internal Error (2000) msg: Publisher failed to access camera/mic:

有什么想法吗?

最佳答案

这是 OpenTok 当前 JS 库中的一个错误。我确实有一个解决方法可以让你继续前进,当错误被修复后我会回来提供更新。

var waiting = false;
publisher.addEventListener('accessAllowed', function() {
  waiting = false;
  allowed();
});
publisher.addEventListener('accessDenied', function() {
  waiting = false;
  denied();
});
publisher.addEventListener('accessDialogOpened', function() {
  waiting = true;
});
publisher.addEventListener('accessDialogClosed', function() {
  setTimeout(function() {
    if (waiting) {
      waiting = false;
      denied();
    }
  }, 0);
});

此解决方法有一些局限性,因为 Chrome 在拒绝一次访问然后再次访问该页面时有些奇怪。如果用户没有更改他/她关于媒体权限的首选项,视频将继续被拒绝并且 'accessDialogOpened' 甚至不会触发。我会通知团队并继续调查此事。

关于javascript - Chrome 中的 OpenTok accessDenied 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21559016/

相关文章:

javascript - 将其传递给 jQuery 插件

javascript - jvectormap标记颜色问题

javascript - 未捕获的类型错误 : Cannot read property 'setAttribute' of undefined at Object. onLoad

android - OpenTok 抓取订阅者视频流的屏幕截图

swift - 使用 openTok 发送消息

javascript - React JS 映射对象名称的问题

html - 如何让文本框侧面的按钮始终完美对齐?

css - Android 版 Chrome 中两个网站的字体大小不同

android - 调整浏览器屏幕大小后,CSS 水平滚动条出现在 chrome 中

ios - 找不到 Heroku 存储库的 URL