2014-12-29 3 views
0

Мое приложение играет музыку в фоновом режиме. У меня есть аудио ключ на в режимах фона, моя звуковая сессия выглядит следующим образом:Ошибка ExtAudioFileRead с кодом -40

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"); 
} 

Я играю через AUGraph, который выполнен с 2-мя узлами: Remote I/O и Mixer:

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)); 

Но до сих пор не повезло, что мое приложение сохраняет болидом g на ExtAudioFileRead в функции обратного вызова Render около 10 секунд, когда я блокирую iPhone. Какие-либо предложения? Важно отметить, что эта ошибка не воспроизводится на ios 7.

+0

Мои дальнейшие исследования показали, что эта ошибка воспроизводится только на iOS 8.1.2. По-видимому, это ошибка IOS – zshcbka

ответ

1

Проблема была в том, что защита данных включена в возможностях приложения. Так как устройство было заблокировано, файлы были зашифрованы и не могли быть воспроизведены в фоновом режиме. Отсюда крушение. Изменение свойств шифрования для аудиофайлов устраняет эту проблему.

Смежные вопросы