Хорошо, я изучил использование AudioServices и использовал следующий код:
// Use SystemSound API's
NSURL *alarmSound = [[NSBundle mainBundle] URLForResource:alarm.alarmTone withExtension:@"wav"];
soundFileURLRef = (CFURLRef) [alarmSound retain];
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundFileObject);
AudioServicesPlayAlertSound(soundFileObject);
[alarmSound release];
Это хорошо звучит в фоновом режиме, и AudioServicesPlayAlertSound также запускает вибрацию, которая является бонусом.Хотя на самом деле вы не можете остановить звук, мне удалось остановить его, избавившись от звукового объекта
AudioServicesDisposeSystemSoundID(soundFileObject);
Единственное, что я до сих пор не могу сделать, - это заставить мой сигнал тревоги переопределить переключатель отключения звука, АудиоСеансы, похоже, не влияют на звук, запускаемый Audio Services.Не знаете, знает ли кто-нибудь еще, как это сделать?Еще один недостаток - отсутствие зацикливания звука, но я только что записал свой звуковой файл в аудиоредакторе:)