从后台杀死应用程序后 UILocalnotification 不起作用
Posted
技术标签:
【中文标题】从后台杀死应用程序后 UILocalnotification 不起作用【英文标题】:UILocalnotification not working after killing the app from background 【发布时间】:2013-12-20 06:50:39 【问题描述】:我正在使用 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];
我尝试调试这个问题,我发现每当我点击应用程序图标时,它都没有收到任何本地通知。只有当我点击通知时,我才会收到本地通知。我不知道这是什么时候出现的错误,或者我是否遗漏了什么。
所以请帮帮我
问候 兰吉特。
【问题讨论】:
【参考方案1】:这不是错误! 苹果开发库中的Handling Local and Remote Notifications 说
处理本地和远程通知
让我们回顾一下系统为应用程序传递本地通知或远程通知时可能出现的情况。
当应用程序未在前台运行时,会发送通知。 在这种情况下,系统会显示通知、显示警报、标记图标,可能还会播放声音。
作为呈现通知的结果,用户点击警报的操作按钮或点击(或单击)应用程序图标。 如果点击操作按钮(在运行 ios 的设备上),系统会启动应用程序并且应用程序调用其委托的 application:didFinishLaunchingWithOptions: 方法(如果已实现);它传入通知负载(用于远程通知)或本地通知对象(用于本地通知)。
如果在运行 iOS 的设备上点击应用程序图标,应用程序会调用相同的方法,但不会提供有关通知的信息。如果在运行 OS X 的计算机上单击应用程序图标,应用程序将调用委托的 applicationDidFinishLaunching: 方法,委托可以在该方法中获取远程通知负载。
iOS 注意:应用程序委托可以实现 applicationDidFinishLaunching: 而不是 application:didFinishLaunchingWithOptions:,但强烈建议不要这样做。后一种方法允许应用程序接收与其启动原因相关的信息,其中可能包括通知以外的内容。 当应用程序在前台运行时发送通知。 应用程序调用其委托的 application:didReceiveRemoteNotification: 方法(用于远程通知)或 application:didReceiveLocalNotification: 方法(用于本地通知)并传入通知负载或本地通知对象。
【讨论】:
所以他们没有办法实现它以上是关于从后台杀死应用程序后 UILocalnotification 不起作用的主要内容,如果未能解决你的问题,请参考以下文章