diff --git a/messaging/MessagingExample.xcodeproj/project.pbxproj b/messaging/MessagingExample.xcodeproj/project.pbxproj index bba95ee9e..2a8c82254 100644 --- a/messaging/MessagingExample.xcodeproj/project.pbxproj +++ b/messaging/MessagingExample.xcodeproj/project.pbxproj @@ -733,7 +733,7 @@ repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; requirement = { kind = upToNextMajorVersion; - minimumVersion = 11.7.0; + minimumVersion = 12.18.0; }; }; /* End XCRemoteSwiftPackageReference section */ diff --git a/messaging/MessagingExample/AppDelegate.swift b/messaging/MessagingExample/AppDelegate.swift index 9fe1543a0..8e03293bc 100644 --- a/messaging/MessagingExample/AppDelegate.swift +++ b/messaging/MessagingExample/AppDelegate.swift @@ -164,4 +164,21 @@ extension AppDelegate: MessagingDelegate { } // [END refresh_token] + + func messaging(_ messaging: Messaging, didReceiveRegistration installationId: String?) { + print("FCM registration: \(String(describing: installationId))") + + let dataDict: [String: String] = ["token": installationId ?? ""] + NotificationCenter.default.post( + name: Notification.Name("FCMToken"), + object: nil, + userInfo: dataDict + ) + // TODO: If necessary send installation ID to application server. + // Note: This callback is fired at each app startup and whenever a new registration is generated. + } + + func messaging(_ messaging: Messaging, didUnregister installationId: String) { + print("Did unregister FCM registration: \(installationId)") + } } diff --git a/messaging/MessagingExample/Info.plist b/messaging/MessagingExample/Info.plist index dcc816fc8..448e69a06 100644 --- a/messaging/MessagingExample/Info.plist +++ b/messaging/MessagingExample/Info.plist @@ -24,6 +24,8 @@ ???? CFBundleVersion 1 + FirebaseMessagingInstallationIdEnabled + LSApplicationCategoryType LSRequiresIPhoneOS diff --git a/messaging/MessagingExample/ViewController.swift b/messaging/MessagingExample/ViewController.swift index babdefc17..3f57d6ee8 100644 --- a/messaging/MessagingExample/ViewController.swift +++ b/messaging/MessagingExample/ViewController.swift @@ -32,22 +32,35 @@ class ViewController: UIViewController { } @IBAction func handleLogTokenTouch(_ sender: UIButton) { - // [START log_fcm_reg_token] - let token = Messaging.messaging().fcmToken - print("FCM token: \(token ?? "")") - // [END log_fcm_reg_token] - fcmTokenMessage.text = "Logged FCM token: \(token ?? "")" + if Messaging.messaging().isInstallationIdEnabled { + Messaging.messaging().register { [weak self] error in + guard let self = self else { return } + if let error = error { + print("Error registering FCM: \(error)") + self.remoteFCMTokenMessage.text = "Error registering: \(error.localizedDescription)" + } else { + print("Successfully registered with FCM") + self.remoteFCMTokenMessage.text = "Successfully registered with FCM." + } + } + } else { + // [START log_fcm_reg_token] + let token = Messaging.messaging().fcmToken + print("FCM token: \(token ?? "")") + // [END log_fcm_reg_token] + fcmTokenMessage.text = "Logged FCM token: \(token ?? "")" - // [START log_iid_reg_token] - Messaging.messaging().token { token, error in - if let error = error { - print("Error fetching remote FCM registration token: \(error)") - } else if let token = token { - print("Remote instance ID token: \(token)") - self.remoteFCMTokenMessage.text = "Remote FCM registration token: \(token)" + // [START log_iid_reg_token] + Messaging.messaging().token { token, error in + if let error = error { + print("Error fetching remote FCM registration token: \(error)") + } else if let token = token { + print("Remote instance ID token: \(token)") + self.remoteFCMTokenMessage.text = "Remote FCM registration token: \(token)" + } } + // [END log_iid_reg_token] } - // [END log_iid_reg_token] } @IBAction func handleSubscribeTouch(_ sender: UIButton) { @@ -61,7 +74,7 @@ class ViewController: UIViewController { @objc func displayFCMToken(notification: NSNotification) { guard let userInfo = notification.userInfo else { return } if let fcmToken = userInfo["token"] as? String { - fcmTokenMessage.text = "Received FCM token: \(fcmToken)" + fcmTokenMessage.text = "Received FCM registration: \(fcmToken)" } } }