FCM получает регистрационный токен из службы FCM, не являющейся службой FCM по умолчанию

#android #firebase-cloud-messaging

#Android #firebase-облако-обмен сообщениями

Вопрос:

После обновления до новейшей Firebase нет способа получить регистрационный токен FCM для выбранного fcmSenderId:

   FirebaseInstanceId
         .getInstance()
         .getToken(fcmSenderId, "FCM")
 

В документации говорится, что вместо этого следует использовать FirebaseMessaging (https://firebase.google.com/docs/reference/android/com/google/firebase/messaging/FirebaseMessaging#getToken()):

     FirebaseMessaging
                .getInstance()
                .token
                .addOnCompleteListener { task ->
                    if (task.isSuccessful) {
                        task.result?.let { token ->
                            println(token)
                        }
                    } else {
                        println(task.exception)
                    }
                }
 

но этот метод не позволяет предоставлять пользовательский идентификатор отправителя FCM.

Проект настроил google-сервисы.json, но нужно использовать другой проект FCM.

Ответ №1:

Вы можете попробовать что-то вроде:

 val options = FirebaseOptions.Builder()
    .setGcmSenderId("sender")
    // Also set your other project properties, like firebaseid, database if you wish
    .build()

val app = FirebaseApp.initializeApp(context, options)
val messaging = app.get(FirebaseMessaging::class.java)
messaging.token.addOnCompleteListener { 
    
}
 

Комментарии:

1. Получение: java.lang. Исключение IllegalArgumentException: пожалуйста, укажите свой идентификатор проекта. Для связи с API сервера Firebase требуется действительный идентификатор проекта Firebase: он идентифицирует ваш проект с помощью Google.

2. Да, вам нужно установить другие свойства вашего проекта в опции, это в основном создает новый экземпляр приложения firebase