3

我有一个消息应用程序,它通过推送通知从服务器获取数据。在下图中,您可以看到该过程并检查它出现故障的位置:在此处输入图像描述

我已经对这个问题进行了很多研究,但没有得到一个通用的解决方案。

我得到的一种解决方案是使用此处讨论的静默通知在数据显示之前获取数据并保存。但是一旦我收到静默通知,我就没有找到如何显示来自应用程序委托的通知。

如果我在某个地方在概念上是错误的,请纠正我。

更新:问题之一是application:didReceiveRemoteNotification:fetchCompletionHandler:仅在

  1. 应用程序在前台
  2. 用户点击通知

但是当用户点击通知时,application:didReceiveRemoteNotification:fetchCompletionHandler: 没有被调用,我找不到保存数据的方法,通知中存在。

4

2 回答 2

3

有两种情况:

  1. 背景
  2. 封闭状态

如果应用程序在Background State,则必须启用Background Fetch,然后在应用程序处于后台时会调用此方法application:didReceiveRemoteNotification:fetchCompletionHandler:

当应用程序是closedkilled由用户使用上述方法时,您可以使用该VoIP技术。

didReceiveIncomingPushWithPayload每当远程通知到达时都会调用方法

您可以在此处找到有关 VoIP 的更多详细信息

于 2018-01-30T05:57:44.583 回答
3

如果我正确,您的问题是“在应用程序处于前台时从远程通知获取数据”,您可以使用这两种方法从远程通知中获取后台和前台应用程序模式的数据。

//  Notification will present call back
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    completionHandler([.alert, .sound, .badge])

    // Handle your data here
    print("Notification data: \(notification.request.content.userInfo)")
}

@available(iOS 10.0, *)
//  Notification interaction response call back
func userNotificationCenter(_ center: UNUserNotificationCenter,
                            didReceive response: UNNotificationResponse,
                            withCompletionHandler completionHandler: @escaping () -> Void) {

    // Handle your data here
    print("Notification data: \(response.notification.request.content.userInfo)")

}
于 2018-01-30T06:09:35.017 回答