如何在应用程序closures时在iOS中接收本地通知

我正在使用本地通知报警系统,但我在处理本地通知时遇到了一些问题,当我点击报警通知(当应用程序closures时)其启动应用程序,但问题是它应该去didFinishLaunchingWithOptionsfunction,但它不会进去appDelegate中的函数(我使用断点来检查)。 我正在使用导航控制器的故事板,我想打开一个特定的视图控制器上的应用程序closures时通知点击。

但是当我启动这个应用程序时,通常会进入didFinishLaunchingWithOptions函数。

请build议。

任何帮助,将不胜感激。

的main.m

 #import "DEMOAppDelegate.h" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([DEMOAppDelegate class])); } } 

DEMOAppDelegate.m

 #import "DEMOAppDelegate.h" @implementation DEMOAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UILocalNotification *localNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsLocalNotificationKey]; if (localNotif) { NSLog(@"Recieved Notification %@",localNotif); } return YES; } - (void)applicationWillResignActive:(UIApplication *)application { } - (void)applicationDidEnterBackground:(UIApplication *)application { } - (void)applicationWillEnterForeground:(UIApplication *)application { } - (void)applicationDidBecomeActive:(UIApplication *)application { } - (void)applicationWillTerminate:(UIApplication *)application { } -(void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:notification.alertAction message:notification.alertBody delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; } @end 

这是不可能的,当你的应用程序没有运行通知时,它不会直接对通知做出反应。

didFinishLaunchingWithOptions将仅包含用户通过此通知打开您的应用程序时有关通知的信息。 如果他取消它,并通过仪表板图标打开你的应用程序,你不会看到这个方法。

不幸的是,如果您需要对上次用户打开应用时发生的所有通知做出反应,唯一的方法是构build自己的跟踪逻辑并根据时间获取过去的所有事件。 也没有办法,甚至可以得到你的应用程序的通知列表,所以通常是build立在基于时间的事件逻辑和使用通知的顶部是一个好主意,但所有的逻辑发生在你自己的时间基于代码。 这样,即使用户禁用通知您的关键逻辑将工作。

当应用程序在后台运行时,您将通过application:didReceiveRemoteNotification获取通知。 您可以将这些通知收集到您的应用程序中,并在applicationDidBecomeActive上处理它们,如果您想在用户从后台回到应用程序后为您的应用程序执行任何特定的内容。