Android: как интегрировать push-уведомления в уже существующее приложение? - PullRequest
0 голосов
/ 10 июля 2019

Как интегрировать Push Notification в уже существующее приложение для Android?

Мое приложение для Android уже доступно в playstore, и теперь я хочу интегрировать Push Notification в следующем выпуске.Я реализовал это с помощью FCM и AWS SNS.

Проблема в том, что метод onNewToken в FirebaseMessagingService будет вызываться только после новой установки приложения.Но когда мы обновляем его, метод onNewToken никогда не получает вызов.Поэтому мы не можем зарегистрировать токен на портале AWS при обновлении приложения.Эксперты, пожалуйста, посоветуйте, как реализовать это в существующем приложении?

Ответы [ 2 ]

2 голосов
/ 10 июля 2019
// Use this in your splashscreen or dashboard view.    
FirebaseInstanceId.getInstance().instanceId.addOnCompleteListener { task ->
        if (!task.isSuccessful)
            return@addOnCompleteListener

        if(prefs.pushNotificationToken == "") {
            //log the token
            prefs.pushNotificationToken = task.result?.token?.trim() ?: ""
            //send user push notification token to the server(use Patch instead of Post)
        }
}

При этом как старый, так и новый пользователь будут иметь «pushNotificationToken» в настройках, чтобы быть пустым.Таким образом, мы можем в любое время получить токен из базы Firebase и отправить его в серверную часть. Или, сначала, мы можем проверить токен в наших префиксах, а затем только запросить у FireBase токен.

1 голос
/ 10 июля 2019

Проблема в том, что метод onNewToken в FirebaseMessagingService получит вызывается только когда мы установили приложение заново. Но когда мы обновляем его Метод onNewToken никогда не получает вызов. Поэтому мы не можем зарегистрировать токен на Портал AWS при обновлении приложения. Эксперты, пожалуйста, посоветуйте, как реализовать это в существующем приложении?

Вы можете позвонить

FirebaseInstanceId.getInstance().getToken(senderId,"FCM");

В любое время, чтобы получить идентификатор экземпляра для отправки на ваш сервер, это блокирующий вызов, поэтому обязательно сделайте это в фоновом потоке

...