我正在尝试按重复间隔触发本地通知,但我希望每次发送通知时都调用另一种方法。这可能吗?
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil) return;
//Repeat every 60 seconds
NSDate *fireTime = [[NSDate date] dateByAddingTimeInterval:60];
localNotif.fireDate = fireTime;
localNotif.alertBody = @"Notification Sent!"; //send notification
localNotif.repeatInterval=kCFCalendarUnitMinute;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
//call method??
我想打电话给这个方法:
-(void) callAfterSixtySecond
{
//do something
}
答案 0 :(得分:0)
是和否。如果应用程序在通知触发时处于活动状态,则会在app委托中调用application:didReceiveLocalNotification:
,您可以使用此方法调用该方法。但是,如果应用程序位于后台,则除非用户通过点击通知中心中的通知启动应用程序,否则不会调用此方法,因此在通知首次触发时不会显示。
您可以通过以下方式单独安排方法:
[self performSelector:@selector(callAfterSixtySecond) withObject:nil afterDelay:60];
只要应用程序运行时应用程序仍有处理时间,这将有效。如果用户已关闭应用程序,则通常只有大约10秒的处理时间,但在相同的情况下,可以通过启动后台任务来增加(请参阅UIApplication
中的beginBackgroundTaskWithName:expirationHandler:
)。