😊

ブラウザでマイク使用を許可しなかった場合のエラーハンドリング

2024/02/08に公開

問題

音声録音のためにとあるライブラリを導入していたが、ユーザーがマイクの使用を許可しない場合にブラウザごとに異なるエラーメッセージが表示される。

解決方法

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("マイクの使用が許可されていません。");
    }
  }

  // その他のエラー
}

参考

https://developer.mozilla.org/ja/docs/Web/API/MediaDevices/getUserMedia#notallowederror

Discussion