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

时间:2017-04-07 05:31:09

标签: ios swift firebase firebase-cloud-messaging

如何使用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的打印输出,但我不确定如何实际显示横幅提醒。

感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

我在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);

}

答案 1 :(得分:0)

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

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

但是,主要目标是访问推送通知发送的键值对。没有必要通过Firebase的自定义对象来访问它们。

每个UNNotification对象都有一个userInfo字典(虽然它的嵌套相当严重):

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

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

let appData = remoteMessage.appData