FirebaseInstanceId:令牌检索失败:SERVICE_NOT_AVAILABLE

时间:2019-03-29 11:55:27

标签: android firebase firebase-realtime-database

我正在制作一个可以在单击按钮时写入Firebase数据库的应用程序。 该应用程序可以在模拟器上运行,但不能在我的物理设备上运行。 该应用程序上周运行良好,但今天开始出现错误。 这是主要的活动代码:

public class MainActivity extends AppCompatActivity {
    private Firebase fled1;
    Button on;
    Button off;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        on=  findViewById(R.id.on);
        off=  findViewById(R.id.off);

        on.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            DatabaseReference fled1 = FirebaseDatabase.getInstance().getReferenceFromUrl("https://testproject-tb.firebaseio.com/");
            DatabaseReference fled1Child = fled1.child("Button1");     
            fled1Child.setValue("1");
            }
        });

        off.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            DatabaseReference fled1 = FirebaseDatabase.getInstance().getReferenceFromUrl("https://testproject-tb.firebaseio.com/");
            DatabaseReference fled1Child = fled1.child("Button1"); 
            fled1Child.setValue("0");
            }
        });
    }

这是我的清单文件,我已添加了所有必需的权限:

  <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.lalitahuja.iotbutton">
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="com.example.lalitahuja.iotbutton.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

这是构建Gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.lalitahuja.iotbutton"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    //noinspection GradleCompatible
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.google.firebase:firebase-core:16.0.8'
    implementation 'com.google.firebase:firebase-database:16.1.0'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.7'
    implementation 'com.google.firebase:firebase-auth:16.2.0'
    implementation 'com.firebase:firebase-client-android:2.5.2'
}
apply plugin: 'com.google.gms.google-services'

我得到的错误:

E / FirebaseInstanceId:令牌检索失败:SERVICE_NOT_AVAILABLE

编辑:我尝试了Internet上现有的解决方案,但没有一个起作用。

2 个答案:

答案 0 :(得分:5)

自从我最近遇到这个问题以来,让我列出它为什么会出现以及如何解决。

我已经将一个应用程序(称为app1)添加到项目中。现在,在清理应用程序时,我不想删除该应用程序,因此我在同一项目中添加了具有不同软件包的另一个应用程序(我们称其为newAPP。)

发生了问题,因为我将旧的google-services.json文件(对于app1)复制到了新的android应用中。那是一个错误。

一旦我在firebase控制台中添加了newAPP并在newAPP代码库中下载了google-services.json文件,我仍然不断收到此错误。

我收到此错误,因为构建文件(由Studio自动生成)仍然具有旧的app-id和client-id等。

所以要修复它,我必须执行以下操作:

  1. 清理项目(“构建”标签下)
  2. 重建项目(在Build选项卡下)
  3. 重新创建模拟器(使用AVD)

请确保将“ app \ build \ Generated \ res \ google-services \ debug \ values \ values.xml”(由Studio build生成)中的应用程序ID与Firebase上与您的应用程序ID相对应的安慰。祝你好运!

答案 1 :(得分:0)

我曾经遇到过这个问题。您可以尝试的几件事。

  1. 尝试重新启动设备

  2. 检查是否启用了Google Play服务和Play商店。

  3. 有时,Google Play服务或Play商店会受到蜂窝数据的限制。为了解决这个问题,我做了以下工作:应用程序数据使用-> Google服务->关闭“限制蜂窝数据访问”选项。