1

iOS で VOIP アプリを開発中です。「着信音を無視する」機能を実装する際に、いくつかの問題が発生しました。次の要件があります。 1. 画面ロックまたは音量ボタンが押された場合は呼び出し音を停止する必要があります 2. ミュート ボタンが押されて「ミュート」状態になった場合は呼び出し音を停止する必要があります 3. ミュート ボタンが「ミュート」状態の場合は呼び出し音を再生しない必要があります

iOS SDK は携帯電話のハードウェア ボタンの情報を提供しないため、AVAudioSession カテゴリの設定に頼ることしかできません。着信音を再生する前に、カテゴリをアンビエントに設定して、画面ロックとミュート ボタンでオーディオを停止できるようにしました。しかし、アンビエント カテゴリはバックグラウンド オーディオをサポートできないため、バックグラウンドではアプリが着信音を再生できないため、この方法では要件を満たすことができません。
この問題を解決するために、playbackandrecord カテゴリでリンガーの再生を開始して、オーディオ ストリームが出てくるようにし、すぐにカテゴリをアンビエントに変更します。私の要件を満たすことはできますが、この方法では多くの問題とバグが発生しました。たとえば、MPVolumeView は出力デバイスを正しく表示できません。

誰でもリンガーをシミュレートするよりエレガントな方法を提供できますか? それともiPhoneでできますか?アプリストアになるのでプライベートAPIは使えません。前もって感謝します。

4

0 に答える 0