私が開発していない既存のアプリに取り組んでおり、FMOD を使用してオーディオを再生します。
見た目から、以前のバージョンのアプリは、代わりに AVAudioPlayer を使用するように作成されており、いずれかを使用するビルド オプションがあります。
ただし、多くの機能は FMOD バージョンを使用してビルドされた場合にのみ含まれるため、最新バージョンでは FMOD を使用します。
問題は、最初に既存のアプリの 1 つを使用してから、開発中のこの新しいアプリを実行しようとしたときに発生します。
1 つのアプリを実行し、それをバックグラウンドのままにして 2 つ目のアプリを実行すると、2 つ目のアプリのサウンドがまったく再生されません。最初のアプリに戻って問題なくサウンドを再生できます。両方のアプリを終了し、もう一方のアプリを最初に起動すると、完全に機能します。
AVAudioPlayer オプションを使用してアプリをビルドすると、この問題は発生しませんが、FMOD バージョン用に作成されたすべての機能がありません。したがって、それが FMOD と関係があることを証明できますが、何が原因かはわかりません。
編集: もう少し掘り下げたところ、2 つの FMOD エラーが発生しました:
まず、実行する
result = fmodSystem->init(4, FMOD_INIT_NORMAL | FMOD_INIT_ENABLE_PROFILE, NULL);
と、エラー 51が表示されます。
次に、実行する
result = fmodSystem->createSound((const char *)[audioData bytes], FMOD_SOFTWARE | FMOD_OPENMEMORY, &exinfo, &fmodSound);
と、エラー 79 が表示されます - 「System::init または System::setDriver が呼び出されなかったため、このコマンドは失敗しました。」
2 つ目は、init が失敗したためと思われます。