我正在使用UIlocalnotifications,因此每当弹出通知并且用户点击它时,我打开ViewController,因此每当我的应用程序处于后台时,当弹出通知以及用户点击它或应用程序图标时,我能够显示ViewController。
但是每当用户从后台杀死应用程序时,当通知发生时,如果他点击通知,我就能够显示ViewController,但如果我点击app Icon,我就无法显示ViewController
以下是我的代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UILocalNotification *locationNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (locationNotification) {
// Set icon badge number to zero
application.applicationIconBadgeNumber = 0;
AlarmViewController *alarmView = [[AlarmViewController alloc]initWithNibName: @"AlarmViewController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:alarmView];
[self.window.rootViewController presentViewController:navController animated:YES completion:nil];
}
}
我试图调试这个问题,我发现的是,每当我点击应用程序图标时,它都没有得到任何本地通知。只有点击通知,我才会得到本地通知。我不知道这是一个错误,还是我错过了什么。
所以请帮帮我
此致 兰吉特。
答案 0 :(得分:5)
这不是一个错误! Apple开发库中的Handling Local and Remote Notifications说
处理本地和远程通知
让我们回顾一下系统为应用程序提供本地通知或远程通知时的可能情况。
当应用程序未在前台运行时,将传递通知。 在这种情况下,系统会显示通知,显示警报,标记图标,或者播放声音。
作为呈现通知的结果,用户点击警报的操作按钮或点击(或点击)应用程序图标。 如果点击操作按钮(在运行iOS的设备上),系统将启动应用程序,应用程序将调用其委托的应用程序:didFinishLaunchingWithOptions:method(如果已实现);它传入通知有效负载(用于远程通知)或本地通知对象(用于本地通知)。
如果在运行iOS的设备上轻触应用程序图标,则应用程序会调用相同的方法,但不会提供有关通知的信息。如果在运行OS X的计算机上单击应用程序图标,则应用程序将调用委托的applicationDidFinishLaunching:方法,其中委托可以获取远程通知负载。
iOS注意:应用程序委托可以实现applicationDidFinishLaunching:而不是application:didFinishLaunchingWithOptions:,但强烈建议不要这样做。后一种方法允许应用程序接收与其启动原因相关的信息,其中可包括除通知之外的其他信息。 当应用程序在前台运行时,将传递通知。 在应用程序调用其委托的应用:didReceiveRemoteNotification:方法(用于远程通知)或应用:didReceiveLocalNotification:方法(本地通知),并把在通知有效载荷或本地通知对象