Firebase iOS 推送通知在后台和前台



我想向iOS设备发送推送通知并实现以下行为:

如果应用位于前台,则在通知到达后立即触发DidReceiveRemoteNotification,并将通知添加到通知托盘。

如果应用程序在后台运行或应用程序已在后台完全关闭,则将通知添加到通知托盘。

目前,如果我使用有效负载Data我可以收到触发DidReceiveRemoteNotification的通知,但前提是未设置Notification有效负载。一旦我设置Notification有效负载,通知就会进入托盘,只有在用户点击通知并打开应用程序后才会触发DidReceiveRemoteNotification

如果没有Notification有效负载,当应用程序在后台完全关闭时,不会收到通知(在通知托盘中或由应用程序接收)。

我想过发送两个通知,一个带有Notification有效负载,以确保通知托盘显示通知,无论应用程序处于什么状态(即使它已完全终止),另一个带有Data有效负载作为Background Notification,以便在应用程序处于前台或运行时更新应用程序中的数据。只是感觉发送 2 个通知只是为了实现感觉相当简单的要求。

要在应用程序处于前台时拦截通知,您应该实现:

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) 

并在函数体调用中completionHandler带有.alert以使其正常显示

completionHandler(.alert)

这样,您将不会显示任何内容,并且可以访问此功能中的notification.request.content.userInfo

相关内容

  • 没有找到相关文章

最新更新