Согласно документации на NewToken,
Called when a new token for the default Firebase project is generated.This is invoked after app install when a token is first generated, and again if the token changes.
Q1. Значит ли это, что его вызовут 2 раза ???
Q2. Я хочу отправить обновленный токен на сервер. Если ответ Q1 - да, то как проверить, что onNewToken получен из-за изменения токена, чтобы я мог отправить обновленный токен на сервер?
Токен может измениться в следующей ситуации:
Вы можете создать свой собственный класс, расширяющий FirebaseMessagingService, для отправки обновленного токена на сервер:
public class MyFirebaseMessagingService extends FirebaseMessagingService {
public MyFirebaseMessagingService() {
}
/**
* Called if InstanceID token is updated.
*/
@Override
public void onNewToken(String s) {
//send updated token to server
}
}
и вы должны зарегистрировать это в манифесте:
<service android:name = ".MyFirebaseMessagingService">
<intent-filter>
<action android:name = "com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
@ Coder123 Чтобы добавить к этому вопросу, вызывается ли onNewToken () когда-либо в фоновом режиме или только тогда, когда приложение находится на переднем плане?
Вы не знали бы заранее, что его вызовут ровно два раза. Например, пользователь может никогда не восстановить приложение на новом устройстве, поэтому его можно вызвать только один раз. Или пользователь может сделать это несколько раз, и он будет вызываться более двух раз.
Что касается определения, что делать, обычно логика не должна учитывать, был ли токен недавно сгенерирован или обновлен, потому что в обоих случаях этот токен теперь является тем, что должен использовать сервер, поэтому вы должны отправить его на сервер безоговорочно.
после того, как приложение удаляет идентификатор экземпляра, в какой момент он переходит в onNewToken ()?