【问题标题】:Is it possible to trigger the didRecieveLocalNotifcation method if the app is closed如果应用关闭,是否可以触发 didRecieveLocalNotifcation 方法
【发布时间】:2013-09-21 06:03:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: objective-c xcode uilocalnotification appdelegate


    【解决方案1】:

    看看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 字典中的任何自定义数据。

    【讨论】:

      【解决方案2】:

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

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

      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
                  UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];  
                  if (localNotif) {       
                      // Show Alert Here
                  }
          }
      

      【讨论】:

      • 我在应用程序中使用了以下代码:didFinishLaunchingWithOptions 并且成功了!
      • UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; [自我申请:申请didReceiveLocalNotification:通知];
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      相关资源
      最近更新 更多