Я пытаюсь понять, почему playSoundFileNamed не работает после двух последовательных телефонных звонков. На самом деле он работает только после того, как получен первый телефонный звонок. Шаги воспроизведения:
- Начать игру
- Дождитесь телефонного звонка и перейдите в фоновый режим.
- Телефонный вызов завершен (отклонен или прерван абонентом)
- Возврат на передний план
После этого воспроизведение звука с touchhesBegan по-прежнему работает.
Когда я повторяю шаги сверху (первый шаг пропускается), механизм от touchhesBegan перестает работать. Не знаю, почему это происходит... Вот код, который может привести к описанному поведению:
@interface GameScene()
@property (nonatomic, strong) SKAction *sound;
@end
@implementation GameScene
-(void)didMoveToView:(SKView *)view {
self.sound = [SKAction playSoundFileNamed:@"sound1.wav" waitForCompletion:NO];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
/* Called when a touch begins */
[self runAction:self.sound];
}
@end
Я знаю, что есть некоторые вопросы, связанные с этим на SO, но ответы на них связаны с обходными решениями. Меня не интересует обходной путь, но почему это происходит?. Это как-то связано с AVAudioSession? (возможно, нет) Я знаю, что я мог бы использовать AVAudioPlayer в качестве обходного пути, но все же не уверен, насколько это исполнитель для воспроизведения множества простых коротких звуков...