オーディオが既に再生されているかどうかに基づいて AVAudioSession カテゴリを設定しようとしています。 AVAudioSession の Apple Dev Docs を読んだ後、私が達成しようとしていたことのソリューションから直接取得したこのコードを思いつきました:
UInt32 otherAudioIsPlaying; // 1
UInt32 propertySize = sizeof (otherAudioIsPlaying);
AudioSessionGetProperty ( // 2
kAudioSessionProperty_OtherAudioIsPlaying,
&propertySize,
&otherAudioIsPlaying
);
if (otherAudioIsPlaying) { // 3
[[AVAudioSession sharedInstance]
setCategory: AVAudioSessionCategoryAmbient
error: nil];
} else {
[[AVAudioSession sharedInstance]
setCategory: AVAudioSessionCategorySoloAmbient
error: nil];
}
すべてが正しくコンパイルされますが、アプリをビルドして実行しようとすると、に対応する Mach-O リンカー エラーが発生しAudioSessionGetProperty
ます。
Undefined symbols for architecture i386:
"_AudioSessionGetProperty", referenced from:
+[AppDelegate setAudioSession] in AppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
AVFoundation/AVFoundation.h
ファイルを AppDelegate (コードが実行されている場所)にインポートしました。また、AVFoundation フレームワークをプロジェクト バイナリ自体にインポートしました。この方法に必要な別のフレームワークがありませんか? このエラーが発生するのはなぜですか?