我正在尝试实现一个类似闹钟的系统,以便在事件发生时提醒手机(在我的情况下是蓝牙事件) . 即使手机处于静音和后台,我也希望发出此警报 .
我创建了一个本地通知,但如果手机处于静音模式,我就无法播放声音(这似乎是正常的,因为我们将手机置于静音状态) .
所以我试图自己管理声音,我正在努力在背景中播放声音 . 到目前为止,我在我的plist中实现了“App播放音频或使用AirPlay传输音频/视频”键,我正在使用此代码 .
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *error = nil;
BOOL result = [audioSession setActive:YES error:&error];
if ( ! result && error) {
NSLog(@"Error For AudioSession Activation: %@", error);
}
error = nil;
result = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&error];
if ( ! result && error) {
NSLog(@"Error For AudioSession Category: %@", error);
}
if (player == nil) {
NSString *path = [[NSBundle mainBundle] pathForResource:@"bell" ofType:@"wav"];
NSURL *url = [NSURL fileURLWithPath:path];
NSError *err = nil;
player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&err];
if(err)
{
NSLog(@"Error Player == %@", err);
}
else {
NSLog(@"Play ready");
}
}
[player prepareToPlay];
[player setVolume:1.0];
if([player play])
{
NSLog(@"YAY sound");
}
else {
NSLog(@"Error sound");
}
即使在静音模式下,声音在前景中也很有效,但在背景中我根本没有声音 . 有任何想法吗 ?
谢谢
EDIT :最后我使用了上面的代码 . 唯一缺失的一点是,我试图播放声音有点似乎是一个不同的线程,当我在我的蓝牙事件中播放它而不是我的函数调用它的工作 .