在iOS中使用AVAudioSession时出错

我用这些代码

- (void)viewDidLoad { [[AVAudioSession sharedInstance] setDelegate: self]; [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil]; AudioSessionAddPropertyListener ( kAudioSessionProperty_AudioRouteChange, audioRouteChangeListenerCallback, self ); NSError *activationError = nil; [[AVAudioSession sharedInstance] setActive: YES error: &activationError]; } 

 void audioRouteChangeListenerCallback (void *inUserData, AudioSessionPropertyID inPropertyID, UInt32 inPropertyValueSize, const void *inPropertyValue ) { // ensure that this callback was invoked for a route change if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return; { // Determines the reason for the route change, to ensure that it is not // because of a category change. CFDictionaryRef routeChangeDictionary = (CFDictionaryRef)inPropertyValue; CFNumberRef routeChangeReasonRef = (CFNumberRef)CFDictionaryGetValue (routeChangeDictionary, CFSTR (kAudioSession_AudioRouteChangeKey_Reason) ); SInt32 routeChangeReason; CFNumberGetValue (routeChangeReasonRef, kCFNumberSInt32Type, &routeChangeReason); if (routeChangeReason == kAudioSessionRouteChangeReason_OldDeviceUnavailable) { //Handle Headset Unplugged } else if (routeChangeReason == kAudioSessionRouteChangeReason_NewDeviceAvailable) { //Handle Headset plugged in } } } 

检测是否在我的项目中插入或插入了audio插孔,但最终出现此错误

 Undefined symbols for architecture armv7: "_AVAudioSessionCategoryAmbient", referenced from: -[ViewController viewDidLoad] in ViewController.o "_OBJC_CLASS_$_AVAudioSession", referenced from: objc-class-ref in ViewController.o ld: symbol(s) not found for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation) 

那么它有什么问题呢? 我是一个初学者在ios任何帮助将不胜感激。

您错过了将AudioToolBox.Frameworks添加到项目文件。 仔细检查你的项目文件设置..

更新实际上错过了AVFoundation.Frameworks添加到项目的构build阶段。