从不接收通过云消息发送的消息

时间:2019-02-20 16:56:20

标签: ios push-notification firebase-cloud-messaging

本周的大部分时间里,我试图将google cloud消息传递起来并正常工作,但没有取得太大的成功。昨天我能够接收到两个测试消息,然后它们停止了,没有收到任何进一步的消息。任何帮助将是感激的。我还添加了

FirebaseAppDelegateProxyEnabled = YES in the info.plist.

是的,我还将消息传递设置为“是”,并且设置了所有正确的按键。

这是我的代码: 我已经用cocoapods安装了Firebase。

import UIKit
import GoogleMobileAds
import Fabric
import Crashlytics
import Firebase
import UserNotifications


@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    let gcmMessageIDKey = "gcm.message_id"

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {


  FirebaseApp.configure()
  GADMobileAds.configure(withApplicationID: "xx-xxxx")
  Fabric.with([Crashlytics.self])




Messaging.messaging().delegate = self


UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]

//Solicit permission from user to receive notifications
UNUserNotificationCenter.current().requestAuthorization(options: authOptions) { (_, error) in
    guard error == nil else{
        print(error!.localizedDescription)
        return
    }
}

  //get application instance ID
  InstanceID.instanceID().instanceID { (result, error) in
      if let error = error {
          print("Error fetching remote instance ID: \(error)")
      } else if let result = result {
          print("Remote instance ID token: \(result.token)")
      }
  }

application.registerForRemoteNotifications()




  return true

}

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
    if let messageID = userInfo[gcmMessageIDKey] {
        print("Message ID: \(messageID)")
    }

    // Print full message.
    print(userInfo)
}

func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
    print("Unable to register for remote notifications: \(error.localizedDescription)")
}
extension AppDelegate: UNUserNotificationCenterDelegate{
func userNotificationCenter(_ center: UNUserNotificationCenter,
                            willPresent notification: UNNotification,
                            withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    let userInfo = notification.request.content.userInfo

    // With swizzling disabled you must let Messaging know about the message, for Analytics
    // Messaging.messaging().appDidReceiveMessage(userInfo)
    // Print message ID.
    if let messageID = userInfo[gcmMessageIDKey] {
        print("Message ID: \(messageID)")
    }

    // Print full message.
    print(userInfo)

    // Change this to your preferred presentation option
    completionHandler([])
}

func userNotificationCenter(_ center: UNUserNotificationCenter,
                            didReceive response: UNNotificationResponse,
                            withCompletionHandler completionHandler: @escaping () -> Void) {
    let userInfo = response.notification.request.content.userInfo
    // Print message ID.
    if let messageID = userInfo[gcmMessageIDKey] {
        print("Message ID: \(messageID)")
    }

    // Print full message.
    print(userInfo)

    completionHandler()
}

}

extension AppDelegate: MessagingDelegate{

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
    print("Firebase registration token: \(fcmToken)")

    let dataDict:[String: String] = ["token": fcmToken]
    NotificationCenter.default.post(name: Notification.Name("FCMToken"), object: nil, userInfo: dataDict)
    // TODO: If necessary send token to application server.
    // Note: This callback is fired at each app startup and whenever a new token is generated.
}

func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
    print("Received data message: \(remoteMessage.appData)")
}
}

0 个答案:

没有答案