我正在使用 UIlocalnotifications,因此每当弹出通知并且用户点击它时,我都会打开 ViewController ,所以每当我的应用程序处于后台时,当通知弹出时以及当用户点击它或应用程序图标时,我能够显示 ViewController。
但是每当用户从后台终止应用程序,并且出现通知时,如果他点击通知,我就可以显示 ViewController,但是如果我点击应用程序图标,我就无法显示 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];
}
}
我试图调试这个问题,我发现,每当我点击应用程序图标时,它都没有收到任何本地通知。只有当我点击通知时,我才会收到本地通知。我不知道这是一个错误,还是我遗漏了什么。
所以请帮帮我
问候 兰 git 。
最佳答案
这不是错误! Handling Local and Remote Notifications在 Apple 的开发库中说
处理本地和远程通知
让我们回顾一下系统为应用程序发送本地通知或远程通知时可能出现的情况。
当应用程序未在前台运行时会发送通知。 在这种情况下,系统会显示通知、显示警报、标记图标,可能还会播放声音。
作为显示通知的结果,用户点击警报的操作按钮或点击(或单击)应用程序图标。 如果点击操作按钮(在运行 iOS 的设备上),系统将启动应用程序并且应用程序调用其委托(delegate)的 application:didFinishLaunchingWithOptions: 方法(如果已实现);它传入通知负载(用于远程通知)或本地通知对象(用于本地通知)。
如果在运行 iOS 的设备上点击应用程序图标,应用程序会调用相同的方法,但不会提供有关通知的任何信息。如果在运行 OS X 的计算机上单击应用程序图标,应用程序将调用委托(delegate)的 applicationDidFinishLaunching: 方法,委托(delegate)可以在该方法中获取远程通知负载。
iOS 注意:应用程序委托(delegate)可以实现 applicationDidFinishLaunching: 而不是 application:didFinishLaunchingWithOptions:,但强烈建议不要这样做。后一种方法允许应用程序接收与其启动原因相关的信息,其中可以包括通知以外的内容。 当应用程序在前台运行时发送通知。 应用程序调用其委托(delegate)的 application:didReceiveRemoteNotification: 方法(用于远程通知)或 application:didReceiveLocalNotification: 方法(用于本地通知)并传入通知负载或本地通知对象。
关于ios - 从后台杀死应用程序后 UILocalnotification 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20697935/