0

В настоящее время я работаю с push-уведомлениями в своем новом проекте, и поэтому я экспериментирую с созданием push-токенов. Мой вопрос в том, когда это истекает? Я храню токены каждого пользователя в базе данных Firebase, но я знаю, что эти токены истекают/повторно генерируются. Итак, мой вопрос: какой лучший способ удерживать токен в актуальном состоянии?Swift FIRMessaging push token reset token

ли я просто делать это каждый раз, когда пользователь переходит к их профилю ?:

let token = FIRInstanceID.instanceID().token() 

ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":token]) 

Вы видите, что прямо сейчас я прошу пользователь разрешить уведомление толчка прямо после регистрации, но почему-то кажется что он все еще генерирует идентификатор маркера, хотя я отклоняю запрос. Итак, мой вопрос: как я могу обновить этот токен? Должен ли я сделать это в AppDelegate?

Спасибо. Помощь очень ценится!

ответ

1

Чтобы правильно хранить маркер в базе данных, вам необходимо обрабатывать два случая:

  1. при запуске приложения
  2. , когда маркер получает обновилась

Первый get the current token на приложение/основной вид начинается с вызова FirebaseInst FIRInstanceID.instanceID().token(), например, viewDidLoad:

if let token = FIRInstanceID.instanceID().token() { 
    ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":token]) 
} 

Поскольку текущий токен, возможно, еще не был создан, вам необходимо обработать nil в этом коде.

Тогда такжеmonitor for changes to the token пути внедрения tokenRefreshNotification:

func tokenRefreshNotification(notification: NSNotification) { 
    if let refreshedToken = FIRInstanceID.instanceID().token() { 
    ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":refreshedToken]) 
    } 

} 

Также см этого ответа я дал подобный потребительному случае для Android: Update Firebase Instance ID on app update

+0

Это работает. Спасибо огромное! – askaale

Смежные вопросы