如何获取通知中心中显示的推送通知

时间:2017-08-17 10:04:14

标签: swift notifications system-tray

所有这些都来自我目前正在开发的一款应用,让我们称之为 SampleApp

如何从我的手机托盘中获取这些通知的列表

enter image description here

是的,我知道我可以通过此代码获取通知

if #available(iOS 10.0, *) {           
    UNUserNotificationCenter.current().getPendingNotificationRequests { (requests) in
        print("here are the iOS 10 notifs \(requests)")
    }         
} else {
    let requests = (UIApplication.shared.scheduledLocalNotifications ?? [])
    print("here are the NON iOS 10 notifs \(requests)")
}

但是这段代码的问题是我只能收到我离线创建的通知,而不是那些来自 Apple推送通知服务器(APNS)的通知

创建离线我的意思是,预定UILocalNotification,因为推送通知不是UILocalNotification s我不知道该怎么做

您可以提出的一些问题

  1. 这些通知来自我的应用吗?

  2. 我是否使用了didReceiveRemoteNotification上的AppDelegate

    • 是的,但那是不同的。
  3. 我的远程通知是否来自APNS

  4. 我的注册远程通知的代码是什么样的?

    if #available(iOS 10.0, *) {
        let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
        let center = UNUserNotificationCenter.current()
        center.delegate = self
        center.requestAuthorization(options: authOptions, completionHandler: { (_, _) in })
    } else {
        let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        application.registerUserNotificationSettings(settings)
    }
    
    application.registerForRemoteNotifications()
    
  5. 更新

    Dávid Pásztor的评论部分解决了这个问题,因为现在我可以检索通知中心中显示的所有(推送和非推送)通知,但是仅适用于iOS 10,因为以下代码仅适用于iOS 10及以上设备,其他版本如何?

    UNUserNotificationCenter.current().getDeliveredNotifications { (notifications) in
        print(notifications)
    }
    

1 个答案:

答案 0 :(得分:2)

Dávid Pásztor的评论部分解决了该问题,因为现在我可以检索通知中心中显示的全部通知(推送和非推送),但是仅适用于PriorityQueue<Integer> pq = new PriorityQueue<Integer>(Collections.reverseOrder()); ,因为下面的代码仅适用于iOS 10及更高版本的设备,其他版本呢?

iOS 10