最近,我在使用APN的消息传递应用程序上工作。接收到远程通知后,将调用委托函数application(_:didReceiveRemoteNotification:fetchCompletionHandler),并将一些通知发布到NotificationCenter,然后观察者可以将新消息追加到我的本地消息数组中。
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
NotificationCenter.default.post(name: Notification.Name(rawValue: "com.rjt.Chao.messaging"), object: nil, userInfo: userInfo)
}
这正常工作,但是当我想通过编写以下代码来添加应用内通知横幅时:
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.badge, .alert, .sound])
}
我现在可以获取应用内横幅,但是未调用application(_:didReceiveRemoteNotification:fetchCompletionHandler),并且无法将通知发布到NotificationCenter。
为什么会这样?用应用内通知横幅实现即时消息应用的最佳方法是什么?