Мне нужно очистить маркер пожарной базы, когда пользователь выйдет из системы, и нужно помешать ему получать уведомления pu sh из бэкэнда.
То, что я до сих пор делал, это
Я создал базу огня и я контролирую автоматическое создание токенов c с помощью следующего кода
В манифесте,
<!-- FCM: Disable auto-init -->
<meta-data android:name="firebase_messaging_auto_init_enabled"
android:value="false" />
<meta-data android:name="firebase_analytics_collection_enabled"
android:value="false" />
В процессе выхода из системы,
Thread {
try {
FirebaseInstanceId.getInstance().deleteInstanceId()
FirebaseMessaging.getInstance().isAutoInitEnabled = true
FirebaseMessaging.getInstance().isAutoInitEnabled = false
} catch (e: IOException) {
e.printStackTrace()
}
}.start()
и я получаю новый токен в разделе «Активность при входе в систему» с помощью кода ниже:
FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener {
devicePushToken = it.token
sharedPreferences.setValue(Constant.FCM_PUSH, devicePushToken)
Log.e(TAG + '2', it?.token.toString())
}
Но проблема в том, что он возвращает удаленный старый токен FCM. Новое поколение токенов занимает некоторое время. Он генерируется правильно в методе OnNewToken службы, но я не смог найти способ получить новый токен с помощью обратного вызова из службы в активность входа в систему. А также если я подожду некоторое время и запросю снова, используя описанное выше (FirebaseInstanceId.getInstance () .instanceId.addOnSuccessListener) Метод Возвращает правильный токен