У меня есть мобильное приложение.У него есть звук воспроизведения.Он отлично работает на моих устройствах всегда, но я получаю много сбоев от реальных пользователей в 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устройства).