2017-02-11 8 views
1

私は、ユーザーのマイクからMP3オーディオを録音するためのライブラリを採用しました。ユーザーが許可またはマイクへのアクセス要求を拒否した場合、私は大丈夫だよ、私はMDN saysこのことに注意してください:ユーザーではないとして、それは、 を解決するでもなく拒絶どちらに返さ約束のために可能であることをgetUserMedia - ユーザーが選択しない場合はどうなりますか?

は注意選択する必要があります。

しかし、何かがあれば、私は "選択肢なし"のアクションを捕まえることができるとは言えません。ユーザーが単にダイアログを終了するか、選択せずにダイアログボックスをぼかすだけの場合は、それを捕捉してUIを調整できますか?

ここに私の現在のコードです:

navigator.mediaDevices.getUserMedia({audio: true}).then(function(stream) { 
    build_ui(); 
    startUserMedia(stream); 
}).catch(function(e) { //<-- doesn't fire if no choice made 
    cfg.no_device_callback && cfg.no_device_callback(e); 
}); 
+0

エラーがスローされなければ、それを捕まえるという約束の 'reject'メソッドを使うことができると思います。 –

+0

それだけです。ユーザーが選択肢がない場合、約束は*拒否されません。 – Utkanos

+0

私はユーザーの大文字小文字が5分で選択できないとは思わないので、ユーザーがX分で選択をしなかった場合、手動で拒否するようにタイムアウトを開始することができます。 –

答えて

1

は、あなたが持っている約束のタイムアウトを実装することができます。次のように

例えば

、あなたは約束のオブジェクトとプロトタイプを拡張することができます:

Promise.wait = function (ms) { 
    return new Promise(function (resolve) { 
     setTimeout(resolve, ms); 
    }); 
}; 

Promise.prototype.timeout = function(ms) { 
    return Promise.race([ 
     this, 
     Promise.wait(ms).then(function() { 
      throw new Error("time out"); 
     }) 
    ]) 
}; 

あなたがいることをしたら、することができます.timeout(10000)でちょうどチェーン:

navigator.mediaDevices.getUserMedia({audio: true}) 
     .timeout(10000).then(function(stream) { 
//  ^^^^^^^^^^^^^^^ 
    build_ui(); 
    startUserMedia(stream); 
}).catch(function(e) { //<-- now also fires if no choice made within 10 secs 
    cfg.no_device_callback && cfg.no_device_callback(e); 
}); 
0

Firefoxの(57)ユーザがの権限ダイアログを閉じることを許可しません。

enter image description here

サファリ(11)ユーザがダイアログを閉じることができません:あなたが選択をするまで、このダイアログでは、無期限に表示されたままになります。それはまた、このように(他のタブを含む)、ブラウザ全体をロックし、その上で選択をするために、ユーザの手を強制的に:

enter image description here

Chromeを(62)を通じ、ダイアログを閉じユーザーに許可します右上の[×]ボタン:クロムPermissionDismissedErrorという名前以外のスペックエラーがスローされますが、このエラーがSPに向かって移動しようとしたクロム64で除去される可能性がありので

enter image description here

この場合の選択肢で

とは明らかactionis ec準拠エラー(this Chromium bug参照)。

this articleにもっとabut getUserMediaというエラーが書き込まれました。

関連する問題