This video是一个可以
的应用录音我们的团队正在开发类似的定制iPhone闹钟
如果有人可以提供帮助,我将非常感激。我一直试图打破这个两个星期。
当设备被锁定时,不会调用我们的下面方法。这就是警报声没有播放的原因
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
if ([GlobalData gSettings].vibration) {
timer = [NSTimer scheduledTimerWithTimeInterval:(1.0) target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
isVibration = YES;
} else {
isVibration = NO;
}
self.uinfo = notification.userInfo;
NSString *soundname = [uinfo objectForKey:@"sound"];
NSURL *clip = [[NSBundle mainBundle] URLForResource:soundname withExtension:@"caf"];
if (clip) {
self.avPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:clip error:NULL];
self.avPlayer.delegate = self;
AudioSessionInitialize (NULL, NULL, NULL, NULL);
AudioSessionSetActive(true);
// Allow playback even if Ring/Silent switch is on mute
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),&sessionCategory);
}
else
{
NSURL *clip = [[NSUserDefaults standardUserDefaults]URLForKey:[uinfo objectForKey:@"sound"]];
self.avPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:clip error:NULL];
self.avPlayer.delegate = self;
AudioSessionInitialize (NULL, NULL, NULL, NULL);
AudioSessionSetActive(true);
// Allow playback even if Ring/Silent switch is on mute
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),&sessionCategory);
}
[self.avPlayer play];
答案 0 :(得分:1)
我稍微挖了一下LivingEarth应用程序。它们似乎正在使用基于MMDeepSleepPreventer的组件。他们使用某种内部警报系统(播放的音乐不是由本地通知触发,而是由NSTimer
触发)。
然而,我发现它在较新的iOS版本中不可靠,所以我稍微调整了一下。启动时,它会继续播放静音音频文件,即使用户按下锁定按钮,也可以让应用程序运行NSTimers
。
你可以找到我的前叉here。