OnNewToken звонят два раза?

Согласно документации на 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 получен из-за изменения токена, чтобы я мог отправить обновленный токен на сервер?

1
0
1 243
2

Ответы 2

Токен может измениться в следующей ситуации:

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

Вы можете создать свой собственный класс, расширяющий 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>

после того, как приложение удаляет идентификатор экземпляра, в какой момент он переходит в onNewToken ()?

Coder123 06.02.2019 09:35

@ Coder123 Чтобы добавить к этому вопросу, вызывается ли onNewToken () когда-либо в фоновом режиме или только тогда, когда приложение находится на переднем плане?

flopshot 06.02.2019 17:14

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

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

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