OpenTok 2 API我遇到了一些麻烦。当我开始发布流时,我被提示允许或拒绝网站使用我的网络摄像头和麦克风,如果我允许允许()运行,但如果我拒绝否认()应该运行。
publisher.addEventListener('accessAllowed', allowed);
publisher.addEventListener('accessDenied', denied);
function allowed() {
console.log('Allowed');
}
function denied() {
console.log('Denied');
}
它在Firefox中按预期工作。但是在Chrome访问允许的情况下,accessDenied不会。相反,我收到以下错误:
OT.Publisher.onStreamAvailableError PermissionDeniedError:
TB.exception :: title: Internal Error (2000) msg: Publisher failed to access camera/mic:
有什么想法吗?
答案 0 :(得分:5)
这是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”甚至不会触发。我会通知团队并继续研究。