Firebase InstanceId не удаляется - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть приложение Android со службами уведомлений firebase, которое в данный момент находится в процессе развертывания.Файл google-services.json, связанный с ним, содержал неправильные записи.Я исправил файл .json, и службы Firebase теперь работают как обычно для вновь установленных приложений.Но для текущих пользователей он не работает (потому что он все еще использует старый токен).

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

Это не будет вызываться очень часто, оно необходимо для ротации ключей и для обработки изменений идентификатора экземпляра в связи с:

  • Приложение удаляет идентификатор экземпляра
  • Приложение восстанавливается на новом устройстве
  • Пользователь удаляет / переустанавливает приложение
  • Пользователь очищает данные приложения

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

Я попытался удалить instanceId программно (поэтому я получаю новый токен);он удаляется (исключение не выдается), но тогда новый токен совпадает со старым.

Не должно ли изменение google-services.json автоматически вызывать смену токена?

Как я могу решить эту проблему без переустановки приложения для текущих пользователей (при обновлении)?

Я использую последние версии Firebase и google-services (в Gradle).

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете обновить свое приложение, отправив новый apk в игровой магазин.Таким образом, после того, как старые клиенты обновят ваш apk, старые клиенты будут заменены новым apk и новым файлом google-services.json.Убедитесь, что ваш код написан для вызова метода onRefreshToken (), получения нового токена и отправки его на ваш сервер для дальнейшего взаимодействия.Когда это будет обновлено.Все ваши новые клиенты смогут получать уведомления.

@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.d("NEW_TOKEN",s);
}
...