Erro de manipulação de interrupção automática ObjectAL

Eu tenho jogado com telefonemas enquanto o jogo (SpriteKit) está sendo executado para testar interrupções. Estou usando o exemplo da documentação do ObjectAL chamada:"Usando os objetos OpenAL e OALAudioTrack".

Então, deixei a biblioteca lidar com isso automaticamente ...

[OALAudioSession sharedInstance ]. handleInterruptions = YES

E funciona, mas parcialmente. Por exemplo, com uma configuração simples com três sons, recebo a seguinte mensagem de erro:

OALAudioSession activAudioSession]: não foi possível ativar a sessão de áudio após duas tentativas: Domínio de erro = NSOSStatusErrorDomain Code = 561015905 "A operação não pôde ser concluída. (Erro de OSStatus 561015905.)"

Error 561015905 == 0x21706C61 == !plae referindo-se ao erro declarado em AVAudioSession.h:

AVAudioSessionErrorCodeCannotStartPlaying = '! Pla', / * 0x21706C61, 561015905

E, na verdade, isso funciona, há duas tentativas fracassadas, a terceira foi bem-sucedida, nada pode ser percebido porque tudo é rápido e tudo parece estar funcionando como deveria.

Percebi que se adicionar mais sons (digamos 20), receberei as mesmas mensagens:

Não foi possível ativar a sessão de áudio após 20 tentativas:

Depois disso, a sessão é ativada. Em seguida, adicionei a mensagem de depuração no método relevante:

OALAudioSession.m

- (void) activateAudioSession
{
    NSError* error;
    for(int try = 1; try <= kMaxSessionActivationRetries; try++)
    {
        if([[AVAudioSession sharedInstance] setActive:YES error:&error])
        {

            NSLog(@"Session activated after %d", try);

            audioSessionActive = YES;
            return;
        }
        OAL_LOG_ERROR(@"Could not activate audio session after %d tries: %@", try, error);
        [NSThread sleepForTimeInterval:0.2];
    }
    OAL_LOG_ERROR(@"Failed to activate the audio session");
}  

Então, finalmente, depois de 20 tentativas malsucedidas, recebo uma mensagem que diz: "Sessão ativada após 21 tentativas"

Mas como o kMaxSessionActivationRetries está definido como 40, a reprodução do som acabará "quebrando" porque o número de tentativas pode facilmente ultrapassar as 40 tentativas permitidas. Estou ciente de que posso alterar esse valor, mas isso não resolve o problema.

Estou perdendo algo importante aqui? Eu pensei que quandohandleInterruptions está definida como YES, não precisamos fazer nenhuma interrupção manual / manipulação de sessão? Estou testando no iPhone 6 e iOS8, se isso importa. Alguém poderia lançar alguma luz sobre isso?

questionAnswers(0)

yourAnswerToTheQuestion