FIRInstanceID.instanceID()。token()和Messaging.messaging()之间有什么区别.fcmToken?

时间:2017-06-18 14:06:51

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

我正在我的应用中实施Firebase推送通知。在一个教程中,我发现我从Messaging.messaging().fcmToken得到了令牌,在this问题中我发现了这种方法:FIRInstanceID.instanceID().token()

他们之间有什么区别?我唯一的目标是能够向我的后端人员发送令牌,以便他们可以在数据库中识别我的推送通知。目前生成令牌的代码是:

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

    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
        Messaging.messaging().delegate = self
    } else {
        let settings: UIUserNotificationSettings =
            UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        application.registerUserNotificationSettings(settings)
    }

    application.registerForRemoteNotifications()

    FirebaseApp.configure()
    let token = Messaging.messaging().fcmToken
    setFCM(token: token ?? "UNDEFINED") //a function that saves it in user defaults.
    print("FCM token: \(token ?? "")")
    return true
}

1 个答案:

答案 0 :(得分:2)

调用其中任何一个都应该返回相同的注册令牌。

区别在于FIRInstanceID只有与注册令牌相关的方法(例如,获取和删除令牌),而Messaging(又名FIRMessaging - naming changes)通常提供更多方法(例如订阅主题,发送上游消息)。