画面を閉じても止まらない、失わない:iPhone の録音アプリで直した4つのこと

iPhone の録音アプリで、録音が止まる・失われる4つの不具合を直しました。タブの切り替えで AVAudioSession の setActive(false) がマイクを止める、強制終了でファイルが読めない、通話で終わる、送信待ちから消える。原因と直し方の記録です。

「止まらない・失わない」の文字と、タブの切り替え・強制終了・通話・送信待ちの札

iPhone の録音アプリで録音が止まった原因の1つは、別の画面の後片付けで AVAudioSession(iPhone の音声の設定)の setActive(false) を呼び、録音のマイクまで止めていたことでした。音声の設定を管理する係を1つにまとめ、録音中はほかの画面に触らせない形にして直しました。この記事では、強制終了、通話、送信待ちを含めた4つの直し方を書きます。

私たちが作っている接客の録音アプリ(TalkLens)は、スタッフがお客様と話す間、iPhone で録音し、AI で文字起こしと採点をします。録音を始めたら iPhone の画面を閉じてポケットに入れても、録音は続きます。私たちは、これをこのアプリの強みだと考えています。

このアプリは、10を超える店舗で同時に使われています。何人が同時に使っても、録音が失われないこと。これを、ほかの何よりも先に守ると決めています。この記事は、その決まりのもとで直した4つの不具合の記録です。

録音中の画面。経過時間と音の波形が出ていて、下に「録音を終了」のボタンがある
録音中の画面(審査用のデモ)。この画面を閉じても、録音は続く

1. 録音中にタブを切り替えると、録音が止まった

録音中に、過去の採点結果を見ようと別のタブに移り、戻ってくると、録音の経過時間が止まっていました。画面には「録音中」と出ているのに、音が入っていません。

録音中に別のタブへ移り、採点結果の画面を離れる時の後片付けが音声の使用を終える処理を呼び、iPhone の音声の設定はアプリに1つだけなので録音のマイクまで止まっていた
再生の後片付けが、録音のマイクを止めていた

2. 録音中にアプリが落ちると、録音が読めなくなった

録音中にアプリが強制終了されると、それまでの音声がファイルに残っているのに、再生も送信もできませんでした。

地面に置かれた、画面が割れたスマートフォンの写真
録音中にアプリが落ちても、録音を失わない(イメージ写真)
m4a で録音すると、アプリが落ちた時に最後の目次が無くて読めない。録音中は ADTS の aac で書き、終わってから m4a に入れ替えると読める、という比較の図
録音中は、途中で止まっても読める形式で書く

3. 電話がかかってくると、録音が終わってしまった

接客中に、iPhone に電話がかかってくることがあります。アラームが鳴ったり、ほかのアプリが音を出したりすることもあります。こうした時、録音は「中断」として終わっていました。

白い背景に置かれた、黒いダイヤル式の電話機の写真
電話がかかってきても、録音は終わらせない(イメージ写真)
録音の画面の再現。通話中のため一時停止しています、終わると自動で再開します、ここまでの音声は保存されています、という文が落ち着いた色で出ている
一時停止の表示のイメージ(デモ)

4. 送信待ちの録音が、送られないまま残った

録音が終わると、音声はいったん iPhone の中の送信待ちに入り、順にサーバーへ送られます。多くの店舗が同時に使うと、この流れのどこかで詰まりやすくなります。

録音が終わると音声は iPhone の送信待ちに入って順にサーバーへ送られる。載せ損ねた録音は次に開いた時に控えから載せ直し、失敗しても30分おきに送り直し、回数の制限で断られても失敗に数えない
載せ直しと、送り直しを続ける

回数の制限は、同時に使う人が増えるほど当たりやすくなります。制限で断られたのは録音のせいではないので、失敗として数えず、待ってからやり直すのが正しい扱いです。

直したことを、毎回確かめる

4つとも、直したあとに同じことが起きないかを確かめる手段を作りました。録音中にタブを切り替える、録音中にアプリを落とす、といった操作を自動で行う「セルフテスト」をアプリに入れ、開発の時に流しています。サーバーの側は、手元で Google のサービスの偽物を立て、断られる割合を変えながら、すべての録音が最後まで届くかを試しました。

直したあとに同じことが起きないかの確かめ方。アプリに録音中のタブ切り替えやアプリの強制終了を自動で行うセルフテストを入れ、サーバー側は手元で Google のサービスの偽物を立てて、すべての録音が最後まで届くか試した
直したことを、自動で確かめる

まとめ

画面を閉じても止まらない、失わない:iPhone の録音アプリで直した4つのこと:要点のまとめ。録音中は、ほかの画面に音声の設定を触らせない。入力が止まったら録音の側でつなぎ直す
この記事の要点
  • 録音中は、ほかの画面に音声の設定を触らせない。入力が止まったら録音の側でつなぎ直す
  • 録音中は、途中で止まっても読める形式で書き、終わってから m4a に入れ替える
  • 通話などでは録音を終わらせず、一時停止にして、戻れる限り待つ
  • 送信待ちに載せ損ねた録音は載せ直し、回数の制限は失敗に数えずにやり直す

この記事は、AI(Claude)の支援を受けて作成し、筆者が内容を確認しています。

  • iOS
  • 録音
  • AVAudioSession
  • AVAudioRecorder
  • SwiftUI
  • バックグラウンド

関連する記事

この記事に関連するサービス・アプリ

ブログの一覧へ