【问题标题】:How to get already fired UILocalNotification如何获得已经解雇的 UILocalNotification
【发布时间】:2014-05-08 19:42:01
【问题描述】:

我正在我的应用程序中实现UILocalNotification,并且通知按预期传递。据我了解,通知的处理方式如下:

  1. 当应用未运行,用户点击通知时,应用通过applicationDidFinishLaunching方法中的选项接收通知。
  2. 当应用程序处于活动状态时,它会通过didReceiveLocalNotification 方法接收通知。
  3. 当应用在后台,用户点击通知时,通过didReceiveLocalNotification方法接收到通知。

但是有一种情况我无法涵盖,那就是当一个通知被触发时,应用程序在后台,只需单击应用程序图标即可激活应用程序(而不是单击通知)。在这种情况下,没有可用的UILocalNotification。但我仍然想知道自上次激活以来通知已被触发,因为该通知在其 userInfo 属性中有一些需要处理的信息。

目前我已经通过检查applicationDidBecomeActive 中的徽章编号 > 0 来“解决”它,但这只是允许我向用户显示一般消息。我希望能够知道是什么通知导致徽章编号更新。有没有办法做到这一点?

【问题讨论】:

  • 嗨 NilsH,您最终找到解决方案了吗?
  • 不,抱歉。如果不以某种方式自己存储它们,这似乎是不可能的。我只是切换到远程通知。

标签: ios objective-c uilocalnotification


【解决方案1】:

几天前我遇到了完全相同的问题。幸运的是,有一种相当简单的方法可以解决这个问题!

将通知保存在 NSUserDefaults 中,使用 NSKeyedArchiver 将其转换为 NSData。如果您使用存储在通知的 userInfo 字典中的相同键,可能会更容易。

使用 NSKeyedUnarchiver 将其作为 UILocalNotification 取回。然后您就可以按照您认为合适的方式处理通知(或使用 cancelLocalNotification 方法将其删除)。

进一步解释here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    相关资源
    最近更新 更多