Я обнаружил проблему с моим приложением, некоторые пользователи перестали получать уведомления pu sh на некоторое время. Похоже, что их токен FCM, связанный с их учетной записью, истек или им нужен новый. Я протестировал, удалив приложение на моем устройстве, и мне был выдан новый токен fcm в Xcode.
Я скопировал этот токен FCM из консоли XCode и вручную заменил его на тот, который был у меня в базе данных Firebase, после чего я смог успешно получать уведомления pu sh.
Мой вопрос, возможно ли обновить токен FCM текущих пользователей, когда они снова войдут в / или откроют приложение, чтобы они могли успешно получать уведомления pu sh?
Вот мой делегат приложения
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
attemptRegisterForNotifications(application: application)
Messaging.messaging().delegate = self
return true
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
print("Registered for notifications", deviceToken)
Messaging.messaging().apnsToken = deviceToken
}
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
print("Registered with FCM with token:", fcmToken)
}
// Listen for user notifcations
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler(.alert)
}
private func attemptRegisterForNotifications(application: UIApplication) {
print("Attempting to register APNS...")
UNUserNotificationCenter.current().delegate = self
let options: UNAuthorizationOptions = [.alert, . badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(options: options) { (granted, error) in
if let error = error {
print("Failed to request auth:", error)
return
}
if granted {
print("Auth granted.")
} else {
print("Auth denied")
}
}
application.registerForRemoteNotifications()
}