我正在应用中实现 Firebase 推送通知。在一个教程中,我发现我从Messaging.messaging().fcmToken
中获取令牌,在这个 SO 问题中,我找到了这种方法: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
}
调用其中任何一个都应返回相同的注册令牌。
不同之处在于,FIRInstanceID
只有与注册令牌相关的方法(例如获取和删除令牌(,而Messaging
(又名FIRMessaging
- 命名更改(通常提供更多方法(例如订阅主题,发送上游消息(。