在前台 ios 应用程序中未收到 FCM 消息



我正在 ios 中注册并启动 firebase,就像在我的 didFinishLaunchingWithOptions 方法中一样。

    if #available(iOS 10.0, *) {
        // For iOS 10 display notification (sent via APNS)
        UNUserNotificationCenter.current().delegate = self
        let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
        UNUserNotificationCenter.current().requestAuthorization(
            options: authOptions,
            completionHandler: {_, _ in })
        // For iOS 10 data message (sent via FCM
        FIRMessaging.messaging().remoteMessageDelegate = self
    } else {
        let settings: UIUserNotificationSettings =
            UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        application.registerUserNotificationSettings(settings)
    }
    application.registerForRemoteNotifications()

    FIRApp.configure()

然后在 AppDelegate 中像这样设置回调

 func applicationReceivedRemoteMessage(_ remoteMessage: FIRMessagingRemoteMessage) {
    print("fir msg front : (remoteMessage.appData)")
    print(remoteMessage.appData)
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
    print("fir msg : (userInfo)")
}

当我从服务器发送消息时,当应用程序不在前台时,它会显示通知,但是当应用程序处于前台时,我看不到任何通知,也没有调用任何回调。我错过了什么吗?

请实现 UNUserNotificationCenterDelegate 方法。从 iOS 10 开始,您将在 UNUserNotificationCenterDelegate 方法中获得回调。

// The method will be called on the delegate only if the application is in the foreground. If the method is not implemented or the handler is not called in a timely manner then the notification will not be presented. The application can choose to have the notification presented as a sound, badge, alert and/or in the notification list. This decision should be based on whether the information in the notification is otherwise visible to the user.
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions){
}
// The method will be called on the delegate when the user responded to the notification by opening the application, dismissing the notification or choosing a UNNotificationAction.
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping (){
}

如果不实现这些,您会在以下行中出现错误-

UNUserNotificationCenter.current().delegate = self

相关内容

  • 没有找到相关文章

最新更新