Ios 当应用程序返回前台时读取最新推送通知数据(不是通过点击通知)

Ios 当应用程序返回前台时读取最新推送通知数据(不是通过点击通知),ios,iphone,swift,push-notification,Ios,Iphone,Swift,Push Notification,在实现推送通知时 用户可以点击通知将最小化的应用程序带到前台,这对我来说很好,我通常会像这样读取通知数据 func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) ->

在实现推送通知时 用户可以点击通知将最小化的应用程序带到前台,这对我来说很好,我通常会像这样读取通知数据

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
{
    let userInfo = notification.request.content.userInfo
    parsePayload(arg: (userInfo["PN_Body"] as? NSString)!)
    completionHandler([.alert, .badge, .sound])
}
我的问题是关于另一种情况

如果用户在应用程序最小化时收到了5个通知,并将应用程序置于前台(而不是点击通知),那么我将如何读取发送的最新通知


您可以通过调用
func getDeliveredNotifications(completionHandler:@escaping([UNNotification])->Void)获取通知中心中仍然可见的通知。

通知:一个未通知对象数组,表示您的应用程序的本地和远程通知,这些通知已传递,并且在Notification Center中仍然可见。如果您的应用程序的通知在Notification Center中都不可见,则该数组为空

但是,如果通知已过时并且已在通知中心放置了一段时间,则这可能无法提供准确的信息。你可以把它弄得乱七八糟,开始检查通知上的交付日期,并将其与应用程序最后一次进入后台/终止的时间进行比较


正如@paulw11所说,您应该向服务器查询并以这种方式刷新信息。

简单的回答是您不需要。当你的应用程序返回前台时,首先要做的是检查你的服务器是否有更新的数据。通知并不旨在可靠地向应用程序传递数据。