したがって、navigator.webkitGetUserMedia を使用する標準的な方法は次のようになります。
function success() {
console.log('User accepted');
}
function deny() {
console.log('User rejected');
}
navigator.webkitGetUserMedia({video: true, audio: true}, success, deny);
私が開発しているサイトでは、ユーザーのウェブカメラとマイクを絶対に使用する必要があります (実際には Flash を使用していますが、現在はこの API を使用しているようです)。そのため、ユーザーが必要なものを常に認識できるようにあらゆることを行っています。サイトが機能するためにクリックします。
- どちらの関数も呼び出されない場合は、ダイアログが表示されていると想定し、ユーザーに指示を表示します。
- 拒否が呼び出された場合は、ウェブカメラへのアクセスが必要であることを説明し、Chrome の URL バーにあるカメラ アイコンをクリックして決定を変更できることを示します。
- もちろん、success が呼び出された場合、ユーザーは受け入れており、通常どおり続行します。
これがキッカーです。上記の Javascript を (Chrome で) 任意のサイトに貼り付けることで、従うことができます。ユーザーが新しい Web ページに移動するか、ドロップダウンを承認、拒否、または却下せずに現在のページを更新した場合、ブラウザー セッションの現在のドメインに対するアクセス許可ダイアログは再度表示されません。
navigator.webkitGetUserMedia(...)
再度呼び出しても権限ダイアログは表示されず、カメラ アイコンも URL バーに表示されません。コンソールは「ユーザーが拒否されました」とさえ記録しません。さらに、多くのユーザーにとって、このドロップダウンは非常に簡単に無視されてしまいます。利用可能な唯一の修正方法は、ブラウザーを完全に閉じてから再度開くことです (または、ユーザーに強制したくない複雑な設定メニューを手動でナビゲートすることです)。
これが「どういうわけか」意図されたものなのか、それとも何か足りないものがあるのか、ここで誰かに確認できますか?