我的应用在后台播放音乐。我在后台模式中有音频键 ,我的音频会话如下:
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *err = NULL;
[audioSession setCategory:AVAudioSessionCategoryPlayback error:&err];
if( err ){
NSLog(@"There was an error creating the audio session");
}
[audioSession setMode:AVAudioSessionModeDefault error:&err];
if( err ){
NSLog(@"There was an error setting mote to the audio session");
}
[[AVAudioSession sharedInstance] setActive:YES error:&err];
if( err ){
NSLog(@"There was an error setting mote to the audio session");
}
我正在通过配置有2个节点的AUGraph播放:远程I / O和混音器:
AudioComponentDescription outputcd;
outputcd.componentFlags = 0;
outputcd.componentFlagsMask = 0;
outputcd.componentManufacturer = kAudioUnitManufacturer_Apple;
outputcd.componentSubType = kAudioUnitSubType_RemoteIO;
outputcd.componentType = kAudioUnitType_Output;
// Multichannel mixer unit
AudioComponentDescription MixerUnitDescription;
MixerUnitDescription.componentType = kAudioUnitType_Mixer;
MixerUnitDescription.componentSubType = kAudioUnitSubType_AU3DMixerEmbedded;
MixerUnitDescription.componentManufacturer = kAudioUnitManufacturer_Apple;
MixerUnitDescription.componentFlags = 0;
MixerUnitDescription.componentFlagsMask = 0;
同样根据Technical QA我添加了
UInt32 maxFPS = 4096;
AudioUnitSetProperty(_mixerUnit, kAudioUnitProperty_MaximumFramesPerSlice,kAudioUnitScope_Global, 0, &maxFPS,sizeof(maxFPS));
但仍然没有运气,我的应用程序在Render回调函数中持续崩溃 ExtAudioFileRead 大约10秒,因为我锁定了iPhone。有什么建议? 重要的是要提到这个错误不会在ios 7上重现。
答案 0 :(得分:1)
问题在于在应用功能中启用了数据保护。因此,当设备被锁定时,文件已加密,无法在后台播放。因此崩溃。 更改音频文件的加密属性可以解决此问题。