我正在开发一个在后台运行的应用程序。有时我需要告诉用户某事正在发生,所以我播放声音一定次数。为此,我制作了一个计时器,但问题是它不能超过总延迟时间的 10 秒,之后,不再有声音(但应用程序仍在运行)。我已经在前台模式下检查了这种行为,它运行良好。
当我需要通知用户时,这是我的代码:
AudioServicesPlaySystemSound(alarma);
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
numAlarm = 1;
NSTimeInterval delay_in_seconds = 2.0;
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW,delay_in_seconds*NSEC_PER_SEC);
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_after(delay,queue,^{
[self fiBGTemps:ALARM];
});
“fiBGTemps”是这样的,
- (void)fiBGTemps:(int)sender
{
switch (sender){
case TEMP_SCAN:
(…)
break;
case ALARM:
if (numAlarm>0 && numAlarm<NUM_ALARM)
{
AudioServicesPlaySystemSound(alarma);
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
NSTimeInterval delay_in_seconds = 2;
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW,delay_in_seconds*NSEC_PER_SEC);
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_after(delay,queue,^{
[self fiBGTemps:ALARM];
});
numAlarm++;
}
break;
}
}
这种行为正常吗?我错过了什么吗?
谢谢
卡尼克