В каком случае audioSession.currentRoute.outputs пусто? - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть мобильное приложение.У него есть звук воспроизведения.Он отлично работает на моих устройствах всегда, но я получаю много сбоев от реальных пользователей в Crashlytic.Просто мой код:

- (void) checkAndResetAudioSession {
.
.
AVAudioSession * audioSession = [AVAudioSession sharedInstance];
.
.
AVAudioSessionPortDescription * outputPort = [audioSession.currentRoute.outputs objectAtIndex:0];
.
}

Я получаю сбои, которые говорят:

Fatal Exception: NSRangeException
0  CoreFoundation                 0x106eb3ea0 __exceptionPreprocess
1  libobjc.A.dylib                0x106085a40 objc_exception_throw
2  CoreFoundation                 0x106dc5a90 -[__NSCFArray count]
3  MyApp                          0x303b235e4 -[AudioSessionManager checkAndResetAudioSession] (AudioSessionManager.mm:100)
.
.

Как я понимаю, он падает, потому что пытается достичь 0-го объекта индекса переменной audioSession.currentRoute.outputs,Это означает, что вывод должен быть пустым. В каком случае audioSession.currentRoute.outputs может быть пустым? Как я понимаю, это устройства вывода.Таким образом, по крайней мере, всегда должно быть одно устройство вывода.

Дополнительная информация, как я вижу, эта проблема возникает почти всегда в iOS 12 и в основном в iPhone X, 7 и 7 плюс (% 50 сбоев происходят из этих 3устройства).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...