Firebase意外地需要更新版本的Google Play服务

时间:2018-01-26 18:19:47

标签: android firebase firebase-authentication google-play-services

我在Android应用项目中使用Firebase和以下版本:

compile 'com.google.firebase:firebase-core:11.2.0'
compile 'com.google.firebase:firebase-database:11.2.0'
compile 'com.google.firebase:firebase-auth:11.2.0'
compile 'com.google.firebase:firebase-messaging:11.2.0'
compile 'com.google.android.gms:play-services-ads:11.2.0'
compile 'com.google.android.gms:play-services-location:11.2.0'

//...
apply plugin: 'com.google.gms.google-services'

然后我更新了我的应用程序以使用Firebase的最新版本,因此在所有依赖项中将所有11.2.0替换为11.8.0。它编译得很好,但现在,当调用FirebaseAuth.getInstance().signInAnonymously()时,回调永远不会返回,并且不会执行登录。这个错误是沉默的,但我看了一下控制台,我发现:

Google Play services out of date.  Requires 11910000 but found 11518438

显然我的手机安装了Google Play服务版本11.5.18(因此号码为11518438)。我知道,更新Google Play服务应该修复它,但是,这应该如何在生产环境中运行?我确信会有很多用户的Google Play服务应用也会过时。这是否意味着所有这些用户突然有一个应用程序在更新时无法正常工作?

我知道我可以使用makeGooglePlayServicesAvailable(),但感觉不对(例如,用户可能没有互联网或空间进行更新)。每次需要新版本时都会强制用户更新吗?而且,在哪里记录Firebase版本X需要Google Play Services X版?我在Firebase release notes上看不到任何内容。

2 个答案:

答案 0 :(得分:3)

新播放服务和Firebase SDK的发布仅在播放服务APK已100%支持的Android设备可用后发生。期望这些设备将自我更新他们的Play APK。如果由于某种原因在用户的设备上没有发生这种情况,则通常会提示用户在运行使用它的应用程序之前更新其Play服务。

绝大多数情况下,更新是透明的,用户永远不知道(或需要知道)发生了什么。如果您从设备中扣留Play服务,则这不是典型情况。

答案 1 :(得分:2)

对Doug说你应该在你的应用程序中查看你编译的正确版本的google play服务时捎带

GoogleApiAvailability mApiAvail = GoogleApiAvailability.getInstance();
int status = mApiAvail.isGooglePlayServicesAvailable(this);
if(status != ConnectionResult.SUCCESS){
    mApiAvail.showErrorDialogFragment(this,status,1234);
}

这会向用户显示一个对话框,说明他们需要更新/启用Google Play服务。

这解决了设备未更新到您需要的版本的情况。

  

...但它感觉不对(例如用户可能没有   互联网或更新空间)。是否会强制用户更新   每次需要新版本?

当您为应用更新Google Play服务时,您已宣布您的应用无法在没有至少该版本的Google Play服务的情况下运行,因此您强制用户更新以便能够使用您的应用。然后由用户决定是否要这样做。

  

在哪里记录Firebase版本X需要Google Play   服务版X?我在Firebase发行说明中看不到任何内容。

Firebase是Google Play服务的一部分,这就是他们需要使用相同版本的原因