全新推出 Cloud Firestore(测试版):试用 Firebase 和 Google Cloud Platform 全新推出的规模可扩展且灵活的数据库。详细了解 Cloud Firestore

在 Android 上安装和设置

将您的应用关联至 Firebase

  1. 安装 Firebase SDK
  2. Firebase 控制台中,将您的应用添加到 Firebase 项目中。

将实时数据库添加至您的应用

将实时数据库的依赖关系添加到您的应用级 build.gradle 文件:

  implementation 'com.google.firebase:firebase-database:16.0.5'

配置 Firebase 数据库规则

实时数据库提供了声明性规则语言,可用于定义应该如何设计数据结构、如何将数据编入索引以及何时可以读取和写入数据。

默认情况下,对数据库的读写权限是有限制的,只有通过身份验证的用户才能读写数据。要在不设置身份验证的情况下开始使用数据库,您可以将您的规则配置为允许公共访问。这会使得您的数据库向所有人开放,包括不使用您的应用的用户,因此在设置身份验证时,请务必重新限制对您的数据库的访问权限。

写入数据库

使用 getInstance() 检索数据库的实例并引用要写入的位置。

Java
Android

// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");

myRef.setValue("Hello, World!");

Kotlin
Android

// Write a message to the database
val database = FirebaseDatabase.getInstance()
val myRef = database.getReference("message")

myRef.setValue("Hello, World!")

您可以通过这种方式将一系列数据类型保存到数据库,包括 Java 对象。保存对象时,来自任何 getter 的响应将保存为此位置的子位置。

从数据库读取

要实时更新应用数据,您应该将 ValueEventListener 添加到刚才创建的引用中。

此类中的 onDataChange() 方法在附加侦听器时触发一次,以后会在每次数据(包括子节点数据)发生更改时再次触发。

Java
Android

// Read from the database
myRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        // This method is called once with the initial value and again
        // whenever data at this location is updated.
        String value = dataSnapshot.getValue(String.class);
        Log.d(TAG, "Value is: " + value);
    }

    @Override
    public void onCancelled(DatabaseError error) {
        // Failed to read value
        Log.w(TAG, "Failed to read value.", error.toException());
    }
});

Kotlin
Android

// Read from the database
myRef.addValueEventListener(object : ValueEventListener {
    override fun onDataChange(dataSnapshot: DataSnapshot) {
        // This method is called once with the initial value and again
        // whenever data at this location is updated.
        val value = dataSnapshot.getValue(String::class.java)
        Log.d(TAG, "Value is: $value")
    }

    override fun onCancelled(error: DatabaseError) {
        // Failed to read value
        Log.w(TAG, "Failed to read value.", error.toException())
    }
})

可选:配置 ProGuard

在应用中结合使用 Firebase 实时数据库与 ProGuard 时,您需要考虑将如何在模糊处理之后序列化和反序列化模型对象。如果您使用 <DataSnapshot.getValue(Class)DatabaseReference.setValue(Object) 读写数据,则需要向 proguard-rules.pro 文件添加规则:

    # Add this global rule
    -keepattributes Signature

    # This rule will properly ProGuard all the model classes in
    # the package com.yourcompany.models. Modify to fit the structure
    # of your app.
    -keepclassmembers class com.yourcompany.models.** {
      *;
    }

针对发布做好准备

启动应用之前,建议您浏览启动检查清单,确保您的应用已准备就绪!

后续步骤

发送以下问题的反馈:

此网页
Firebase 实时数据库
需要帮助?请访问我们的支持页面