Android Обновление версии Firebase - PullRequest
5 голосов
/ 12 марта 2020

У меня было приложение, использующее сервис Firebase и GMS с версией 11.8.0 в течение 2 лет, и теперь я хочу обновить его до последней версии 17.0.0. Ниже приведены зависимости в градле:

До обновления:

implementation 'com.google.firebase:firebase-core:11.8.0'
implementation 'com.google.android.gms:play-services-location:11.8.0'
implementation 'com.google.android.gms:play-services-base:11.8.0'
implementation 'com.google.firebase:firebase-invites:11.8.0'
implementation 'com.google.firebase:firebase-messaging:11.8.0'
implementation 'com.google.firebase:firebase-config:11.8.0'
implementation 'com.google.android.gms:play-services-maps:11.8.0'

После обновления:

implementation 'com.google.firebase:firebase-analytics:17.2.3'
implementation 'com.google.android.gms:play-services-location:17.0.0'
implementation 'com.google.android.gms:play-services-base:17.1.0'
implementation 'com.google.firebase:firebase-invites:17.0.0'
implementation 'com.google.firebase:firebase-messaging:20.1.1'
implementation 'com.google.firebase:firebase-config:19.1.2'
implementation 'com.google.android.gms:play-services-maps:17.0.0'

И измените код с:

    public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {

        @Override
        public void onTokenRefresh() {
            //Getting registration token
            String token = FirebaseInstanceId.getInstance().getToken();
            // Save token
        }
    }

К

public class MyFirebaseInstanceIDService extends FirebaseMessagingService {

    @Override
    public void onNewToken(@NonNull String s) {
        super.onNewToken(s);
        // Save token
    }
}

А в Манифесте я сохраняю службу регистрации, как показано ниже:

<service android:name=".notification.MyFirebaseInstanceIDService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

Все остальное, что я настраивал ранее, не изменилось. Но при сборке и запуске я получаю сообщение об ошибке с приведенной ниже стековой трассировкой:

2020-03-12 11:38:29.225 26475-26543/com.example E/FirebaseInstanceId: Topic sync or token retrieval failed on hard failure exceptions: FIS_AUTH_ERROR. Won't retry the operation.
2020-03-12 11:38:29.460 26475-26550/com.example E/FirebaseInstanceId: Failed to get FIS auth token
    java.util.concurrent.ExecutionException: com.google.firebase.installations.FirebaseInstallationsException
        at com.google.android.gms.tasks.Tasks.zzb(Unknown Source:61)
        at com.google.android.gms.tasks.Tasks.await(Unknown Source:23)
        at com.google.firebase.iid.zzs.zzb(com.google.firebase:firebase-iid@@20.1.0:54)
        at com.google.firebase.iid.zzs.zza(com.google.firebase:firebase-iid@@20.1.0:89)
        at com.google.firebase.iid.zzv.run(Unknown Source:12)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)
     Caused by: com.google.firebase.installations.FirebaseInstallationsException
        at com.google.firebase.installations.FirebaseInstallations.doRegistrationInternal(com.google.firebase:firebase-installations@@16.0.0:333)
        at com.google.firebase.installations.FirebaseInstallations.doGetId(com.google.firebase:firebase-installations@@16.0.0:280)
        at com.google.firebase.installations.FirebaseInstallations.access$lambda$0(Unknown Source:0)
        at com.google.firebase.installations.FirebaseInstallations$$Lambda$1.run(Unknown Source:2)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:919) 

После поиска решения в Google я нашел что-то вроде этого: https://firebase.google.com/support/release-notes/android#2020 -03-03

Затем я go подключаюсь к своей консоли Firebase и включаю установку Firebase, но ничего не меняется. Так может ли кто-нибудь помочь мне найти способ решить эту проблему? Большое спасибо всем!

Ответы [ 3 ]

4 голосов
/ 12 марта 2020

изменить firebase-messaging версию на 20.1.0

implementation 'com.google.firebase:firebase-messaging:20.1.0'
2 голосов
/ 19 марта 2020

Понижение уровня библиотеки сообщений Firebase не рекомендуется.

Начиная с v20.1.1 облачных сообщений Firebase и 20.1.0 Firebase InstanceId, эти библиотеки зависят от установленного Firebase SDK. Это делает все немного иначе, чем раньше.

Например, если вы используете FirebaseOptions, а не файл .json, вам потребуется дополнительная информация для передачи.

Согласно примечание к выпуску :

Приложения, использующие процесс автоинициализации Firebase и плагин Gradle для преобразования google-сервисов. json в ресурсы, не затрагиваются. Однако приложения, которые создают свои собственные экземпляры FirebaseOptions, должны предоставить действительный ключ API, идентификатор проекта Firebase и идентификатор приложения.

Ссылка: Firebase android примечание к выпуску

TL; DR

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

0 голосов
/ 20 апреля 2020

Firebase Android SDK обновляется 27 февраля (M65), а затем представляет новую инфраструктурную службу, Firebase Installations SDK, которая поставляется с зависимостью от Firebase Installations API .
Для установки Firebase требуются допустимые параметры Firebase API key, project ID и application ID (он же "appId") для успешной связи с серверами Firebase.

Ошибки во время связи с Firebase Установочные API указывают на недопустимые параметры Firebase или неправильные конфигурации ключей API.

Чтобы устранить проблему

  • , убедитесь, что ваше приложение использует допустимые параметры Firebase из самого последнего файла google-services.json из консоли Firebase: Параметры Firebase: инструкции и справочная информация .
  • Если вы используете ограничения API, убедитесь, что ключ API, используемый вашим приложением, внесен в белый список для API установок Firebase (и для вашего приложения): Ограничения API : инструкции и справочная информация
  • Относительно Application restrictions: либо установите переключатель в положение None, либо убедитесь, что ваше приложение занесено в белый список (с правильным значением SHA-1 certificate).

Для получения подробной информации, пожалуйста, посетите:
https://firebase.google.com/support/privacy/init-options

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...