我有一个应用程序使用Firebase和GMS服务的11.8.0版本两年,现在,我想升级到最新版本是17.0.0。下面在gradle中的依赖项:
升级前:
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) 在谷歌上寻找解决方案后,我发现了如下内容:https://firebase.google.com/support/release-notes/android#2020-03-03
然后我转到我的firebase控制台并启用Firebase安装,但是没有什么改变。有人能帮我找出解决这个问题的方法吗?感谢大家!
发布于 2020-03-12 06:32:51
将firebase-messaging版本更改为20.1.0
implementation 'com.google.firebase:firebase-messaging:20.1.0'发布于 2020-03-18 21:21:51
降级防火墙消息传递库不是推荐的解决方案。
作为Firebase云消息传递的v20.1.1和Firebase InstanceId的20.1.0,这些库依赖于Firebase。这使得事情和以前有点不同了。
例如,如果您使用FirebaseOptions而不是google-services.json文件来对这些库进行分类,则需要额外的信息才能传递给FirebaseOptions。
根据释放说明
使用Firebase自动初始化过程和Gradle插件将google-services.json转换为资源的应用程序不受影响。但是,创建自己的FirebaseOptions实例的应用程序必须提供有效的API键、Firebase项目ID和应用程序ID。
参考资料:Firebase android发布说明
TL;博士
因此,总之,您应该寻找影响您的代码的中断更改,并按照最新版本支持的方式更新它们。
发布于 2020-04-19 22:28:50
Firebase 二月二十七日最新消息 (M65)随后引入了一个新的基础设施服务,,它附带了对消防基地安装API的依赖。
防火墙安装需要有效的Firebase选项API key、project ID和application ID (a.k.a )。( "appId"),以便成功地与Firebase服务器通信。
与Firebase Installations通信时出现的错误指示无效的Firebase选项或与API密钥有关的错误配置。
减轻这一问题
google-services.json文件的有效Firebase选项:火力基础选项:说明和背景。Application restrictions:要么将单选按钮设置为None,要么确保应用程序为白色列表(带有正确的SHA-1 certificate)。详情请浏览:
https://stackoverflow.com/questions/60648040
复制相似问题