【问题标题】:How to get the local notifications which are listed in Notifications pull down?如何获取通知下拉列表中列出的本地通知?
【发布时间】:2015-06-04 14:44:28
【问题描述】:

我有一个 iOS 8.0 应用程序,它生成一些本地通知,这些通知显示在全局通知下拉列表中 (The Notifications view)。

完美!现在我想:

  1. 为我的应用获取所有列出的通知。
  2. 根据我在生成本地通知时提供的userInfo 删除特定通知。

我一直在环顾https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/WhatAreRemoteNotif.html#//apple_ref/doc/uid/TP40008194-CH102-SW1

以及探索UIApplication的属性和方法:

UIApplication.sharedApplication().scheduledLocalNotifications.count

~ 但是那个是空的,这是有道理的,因为列表中的通知已经被触发并且不再被安排......所以:

我可以使用哪些 api?

更新 1

scheduledLocalNotifications 为空的最新解释 iOS 8 [UIApplication sharedApplication].scheduledLocalNotifications empty

这导致我找到了一个相当尴尬的解决方案,将通知通过键存储在 NSUserdefault 中,然后通过键获取它并取消通常的方式:

UIApplication.sharedApplication(<notification get from userdefaults by key>). 

但是我真的很想拥有一个更干净的 iOS 解决方案。

【问题讨论】:

    标签: ios


    【解决方案1】:

    一点也不。没有 api 可以得到它。对不起

    -- 您只能看到待处理(尚未发送给用户)的通知

    【讨论】:

    • 好的,那么我只是坚持以下用例 - 我的应用程序有: 4 在notifications view 中触发了本地通知;应用程序徽章计数为 4。好的,我清除了 notifications view 中的所有通知: 0 在 notifications view 中触发了本地通知;应用程序徽章计数为 4。解决此问题的任何提示/建议? (我知道 api 可以将徽章计数设置为 0,但现在我不知道何时可以解雇)
    • 在 applicationDidFinishLaunching 或者你可以使用后台应用刷新
    【解决方案2】:

    试试这个。为您的用户信息填写谓词。

    var app = UIApplication.sharedApplication()
    for localNotification in app.scheduledLocalNotifications {
       if let notification = localNotification as? UILocalNotification {
           if whatever about your userInfo {
             app.cancelLocalNotification(notification)
        }
    }
    

    【讨论】:

    • ~ 你对删除通知的方式是正确的——但假设app.scheduledLocalNotifications 包含一些UILocalNotifications。我的问题是app.scheduledLocalNotifications 是空的!?即使下拉通知列表中有列出的通知。
    猜你喜欢
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 2022-12-07
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    相关资源
    最近更新 更多