У меня есть приложение, в основном основанное на Core Bluetooth. Когда что-то происходит, приложение пробуждается с использованием фоновых режимов Core Bluetooth, и он отключает будильник, однако я не могу получить сигнал тревоги, когда приложение не находится на переднем плане.
У меня есть класс Singleton, который инициализирует AVAudioPlayer
следующим образом:
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:soundName
ofType:@"caf"]];
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
[self.player prepareToPlay];
self.player.numberOfLoops = -1;
[self.player setVolume:1.0];
NSLog(@"%@", self.player);
Это метод, который вызывается при вызове кода тревоги:
-(void)startAlert
{
NSLog(@"%s", __FUNCTION__);
playing = YES;
[self.player play];
NSLog(@"%i", self.player.playing);
if (vibrate) {
[self vibratePattern];
}
}
Теперь, когда приложение находится на переднем плане, self.player.playing
возвращает 1
, однако, когда приложение находится в фоновом режиме self.player.playing
возвращает 0
. Почему это должно быть?
Вызывается весь код, поэтому приложение бодрствует и работает.
Вибрирует отлично, используя AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
Любая идея, почему этот звук не воспроизводится?
Спасибо