本地通知调用单独方法

时间:2016-01-25 00:24:03

标签: ios objective-c uilocalnotification

我正在尝试按重复间隔触发本地通知,但我希望每次发送通知时都调用另一种方法。这可能吗?

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
}

1 个答案:

答案 0 :(得分:0)

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

您可以通过以下方式单独安排方法:

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

只要应用程序运行时应用程序仍有处理时间,这将有效。如果用户已关闭应用程序,则通常只有大约10秒的处理时间,但在相同的情况下,可以通过启动后台任务来增加(请参阅UIApplication中的beginBackgroundTaskWithName:expirationHandler:)。