😊
ブラウザでマイク使用を許可しなかった場合のエラーハンドリング
問題
音声録音のためにとあるライブラリを導入していたが、ユーザーがマイクの使用を許可しない場合にブラウザごとに異なるエラーメッセージが表示される。
解決方法
navigator.mediaDevices.getUserMedia()
を使用してユーザーからの明示的なマイクの許諾を得る。
このAPIはユーザーにマイクへのアクセスを求めるダイアログを表示し、ユーザーの許諾または拒否に基づいてPromiseを解決または拒否します。
try {
// マイクへのアクセスを試みる
await navigator.mediaDevices.getUserMedia({ audio: true });
} catch (error) {
// Errorインスタンスであることを確認
if (error instanceof Error) {
// ユーザーがマイクアクセスを許可していない場合
if (error.name === "NotAllowedError") {
throw new Error("マイクの使用が許可されていません。");
}
}
// その他のエラー
}
参考
Discussion