本地通知调用单独的方法

Local Notifications Call Separate Method

我试图重复触发本地通知,但我希望它在每次发送通知时调用另一个方法。这可能吗?

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
}

是也不是。如果应用程序在通知触发时处于活动状态,则 application:didReceiveLocalNotification: 将在应用程序委托中调用,您可以使用它来调用该方法。但是,如果应用程序在后台运行,则除非用户通过点击通知中心的通知启动应用程序,否则不会调用此方法,因此不会在通知首次触发时调用。

您可以执行此操作的一种方法是使用如下内容单独安排方法:

[self performSelector:@selector(callAfterSixtySecond) withObject:nil afterDelay:60];

只要应用程序在该方法应该 运行 时仍有处理时间,这就会起作用。如果用户关闭了应用程序,它通常只有大约 10 秒的处理时间,但在相同情况下,可以通过启动后台任务来增加处理时间(参见 UIApplication 中的 beginBackgroundTaskWithName:expirationHandler:)。