Вопросы по Firebase Cloud Messaging о переопределении функции onNewToken - PullRequest
0 голосов
/ 06 мая 2020

Я разработал приложение Android, и когда пользователь запускает приложение, приложение выполняет процесс инициализации, а пользователь видит экран spla sh. Этот процесс инициализации включает расшифровку базы данных и et c. Я сохраняю токен FCM и другую информацию в базе данных.

Я написал «MyFirebaseMessagingService», который расширяет FirebaseMessagingService и переопределяет функции «onMessageReceived» и «onNewToken». Я могу без проблем получать уведомления от FCM. Я могу без проблем получить новый токен во время работы приложения.

Мой вопрос: можно ли вызвать функцию onNewToken, когда мое приложение не запущено (не инициализировано). Это означает, что мое приложение не выполняло процесс инициализации (многое делает).

При вызове «onNewToken» мое приложение должно отправить этот токен на несколько серверов и изменить некоторую информацию в зашифрованной базе данных.

Если функция «onNewToken» может быть вызвана, когда мое приложение не инициализировано, как Могу ли я узнать, инициализировано ли мое приложение функцией onNewToken или нет.

Я немного запутался в этом топи c. Как лучше всего это сделать?

1 Ответ

0 голосов
/ 06 мая 2020

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

Типичный подход к этому - просто сохранить токен из фоновой службы на стороне сервера вашего приложения список токенов FCM.

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

...