如何使用 FCM 触发横幅通知?

Posted

技术标签:

【中文标题】如何使用 FCM 触发横幅通知?【英文标题】:How may I trigger banner notifications using FCM? 【发布时间】:2017-04-07 05:31:08 【问题描述】:

如何使用 Firebase 的 FCM 功能在我的应用中显示横幅?我能够通过苹果提供的委托方法接收和显示横幅通知:

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) 
  completionHandler([.alert, .badge, .sound])

但是,一旦我尝试使用 FCM,就不再调用此方法。相反,接收通知信息的是这个方法:

extension FirebaseNotificationManager: FIRMessagingDelegate 
  func applicationReceivedRemoteMessage(_ remoteMessage: FIRMessagingRemoteMessage) 
    let appData = remoteMessage.appData
    appData.forEach  print($0) 
  

我可以获得appData 的打印输出,但我不确定如何实际显示横幅警报。

感谢任何帮助!

【问题讨论】:

【参考方案1】:

我在 ios 10 上使用它并为我工作。

- (void)userNotificationCenter:(UNUserNotificationCenter *)center
   willPresentNotification:(UNNotification *)notification
     withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler 
 
        NSDictionary *userInfo = notification.request.content.userInfo;

        // Print full message.
         NSLog(@"%@", userInfo);

// Change this to your preferred presentation option
      completionHandler(UNNotificationPresentationOptionAlert);


【讨论】:

同时使用 iOS 10。出于某种原因,在我尝试使用 FCM 之后,该方法永远不会被调用。【参考方案2】:

经过一天的研究和实验,我得出结论,对于这种情况,不需要连接到 Firebase FCM。

如果您连接到 FCM,则需要依靠 Firebase 的 applicationReceivedRemoteMessage 方法来处理传入的推送通知。我仍然不知道如何通过该方法显示横幅通知。

但是,主要目标是访问推送通知发送的键值对。无需通过 Firebase 的自定义对象来访问这些对象。

每个UNNotification 对象都有一个userInfo 字典(尽管它的嵌套程度很高):

let userInfo = response.notification.request.content.userInfo

这将包含与FIRMessagingRemoteMessage 中相同的信息:

let appData = remoteMessage.appData

【讨论】:

以上是关于如何使用 FCM 触发横幅通知?的主要内容,如果未能解决你的问题,请参考以下文章

如何知道 FCM 通知进入 IOS

使用swift杀死应用程序时如何存储ios推送通知

如何使用 WatchKit 触发通知

iOS FCM推送通知不能在后台快速工作?

如何将 apns-collapse-id 与 FCM 一起使用?

如何在后台 laravel 中运行推送通知循环?