背景和前景中的Firebase iOS推送通知

时间:2019-07-15 08:59:38

标签: ios firebase xamarin push-notification

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

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

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

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

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

我考虑过发送两个通知,一个带有Notification有效负载,以确保无论应用处于什么状态(即使应用程序已完全终止),通知托盘都显示该通知,另一个带有{{1 }}有效载荷作为Data,以在应用程序处于前台或正在运行时更新应用程序中的数据。仅仅发送2条通知只是为了实现某些直截了当的要求而感到不对。

1 个答案:

答案 0 :(得分:0)

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

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

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

completionHandler(.alert)

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