"didReceiveRegistrationToken" не дает мне fcmToken?

Я создаю приложение с firebase и пытаюсь сохранить токен FCM для push-уведомлений (который отправляется функциями firebase).

То, как я пытаюсь это сделать, - это сохранение deviceToken в UserDefault, чтобы использовать его позже.

Мне нужно сохранить fcmToken, когда пользователь зарегистрируется (чтобы сохранить его в моей базе данных под профилем).

Когда пользователь выходит из системы, мне нужно удалить fcmToken в базе данных.

Из-за этого у меня есть мой func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) в AppDelegate (может быть, это неправильно?), и я храню его так:

AppDelegate код:

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {

        UserDefaults.standard.setValue("fcmToken", forKey: fcmToken)

}

Когда я хочу вызвать его, например, в контроллере представления Sign Up, я объявляю маркер устройства следующим образом:

Зарегистрироваться ViewController code:

let deviceToken = UserDefaults.standard.value(forKey:"fcmToken") as? String ?? "not found"

А потом я сохраняю его в своей базе данных, как это

["fcmToken": deviceToken]

Однако это всегда возвращает "не найдено" в Firebase и не сохраняет фактический идентификатор устройства. Было бы здорово, если бы вы, ребята, могли бы помочь мне в этом.

1 ответ

У вас есть "" назад при сохранении в UserDefaults. как у вас есть, вы сохраняете строку "fcmToken" под строкой fcmToken

 func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {

    print(fcmToken)
    UserDefaults.standard.set(fcmToken, forKey: "fcmToken")

 }
Другие вопросы по тегам