0

在应用程序委托中,我在didRecieveLocalNotification方法中编写了一些代码,首先确定触发了哪个本地通知,然后在单击通知横幅后重新打开应用程序后生成一个 UIAlert。

如果我的应用程序已关闭,local notification仍然会收到,并且单击它确实会从其终止状态重新打开应用程序,但是该didRecieveLocalNotification方法内部的代码根本不会触发。我什至无法让 NSLog 工作。

我能做些什么来解决这个问题?

4

2 回答 2

0

看看https://developer.apple.com/library/ios/documentation/iphone/Reference/UILocalNotification_Class/Reference/Reference.html

您可以在 中获取此信息application:didFinishLaunchingWithOptions,但前提是用户点击本地通知。

当系统传递本地通知时,可能会发生几件事,具体取决于应用程序状态和通知类型。如果应用程序不在最前面且不可见,则系统会显示警报消息、标记应用程序并播放声音(通知中指定的任何内容)。如果通知是警报并且用户点击操作按钮(或者,如果设备被锁定,则拖动打开操作滑块),则启动应用程序。在 application:didFinishLaunchingWithOptions: 方法中,应用程序委托可以使用 UIApplicationLaunchOptionsLocalNotificationKey 键从传入的选项字典中获取 UILocalNotification 对象。委托可以检查通知的属性,如果通知在其 userInfo 字典中包含自定义数据,它可以访问该数据并进行相应的处理。另一方面,如果本地通知仅标记应用程序图标,并且用户响应启动应用程序,则调用 application:didFinishLaunchingWithOptions: 方法,但选项字典中不包含 UILocalNotification 对象。

如果在系统传递通知时应用程序处于最前面且可见,则不会显示警报,不会标记图标,也不会播放声音。但是,如果应用程序委托实现了 application:didReceiveLocalNotification: ,则会调用它。UILocalNotification 实例被传递到此方法中,并且委托可以检查其属性或访问 userInfo 字典中的任何自定义数据。

于 2013-09-22T00:43:27.760 回答
0

当您的应用程序既没有运行也没有在后台运行时,您的通知将application:didFinishLaunchingWithOptions:在您的应用程序委托中的方法中收到。

您可以使用以下代码访问通知对象。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
            UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];  
            if (localNotif) {       
                // Show Alert Here
            }
    }
于 2013-09-22T04:15:21.717 回答