I googled it for hours, but could not find any information if there is any way to keep a running NSTimer active when the app is running in the background ? Please Help me ,
when app is go to background then one function run and each sec check alarm time is equal to current time , then play audio and open close alarm page
If anybody know alarm app open source and its run on background please share with me
Here i try this , but this is not working
- (void)applicationDidEnterBackground:(UIApplication *)application
{
inBackground=YES;
UIApplication* app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
while (inBackground == YES) {
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self
selector:@selector(checkAlert) userInfo:nil repeats:YES];
}
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
-(void)checkAlert
{
NSLog(@"Chalaaaaaa");
NSString *checkAlarmOnOff = [defaults stringForKey:@"setAlarm"];
// Switch Alarm From Setting page
NSString *SwitchAlarm=[defaults stringForKey:@"setSwitchAlarm"];
if([SwitchAlarm isEqualToString:@"ON"])
{
if([checkAlarmOnOff isEqualToString:@"YES"])
{
if(![alarmRun isEqualToString:@"Yes"])
{
NSString *getAlarmTime = [defaults stringForKey:@"setAlarmTime"];
NSLog(@"AA-%@",getAlarmTime);
NSLog(@"BB-%@",globalClockTime);
if([getAlarmTime isEqualToString:globalClockTime])
{
[self MusicAction];
[_audioPlayer play];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alarm" message:@"Alarm On" delegate:self cancelButtonTitle:@"Off" otherButtonTitles:nil, nil];
[alert show];
alarmRun=@"Yes";
}
}
}
}
}
Please help me,
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…