将 Firebase 添加到您的 Android 项目(如果尚未添加)。
创建数据库
进入 Firebase 控制台的 Realtime Database 部分。 系统将会提示您选择一个现有的 Firebase 项目。按照数据库创建工作流操作。
为您的 Firebase 安全规则选择一个初始模式:
- 测试模式
此模式适合刚开始使用移动和 Web 客户端库的开发者,但会允许任何人读取和覆盖您的数据。测试完成后,请务必查看了解 Firebase Realtime Database 规则部分。
如果是刚开始使用 Web、Apple 或 Android SDK,请选择测试模式。
- 锁定模式
拒绝来自移动和 Web 客户端的所有读写操作。经过身份验证的应用服务器仍然可以访问您的数据库。
为数据库选择位置。
新数据库的网址将采用下列格式之一,具体取决于数据库的位置:
(位于DATABASE_NAME.firebaseio.com
us-central1
的数据库) (位于所有其他位置的数据库)DATABASE_NAME.REGION.firebasedatabase.app
点击完成。
如果启用 Realtime Database,也就在 Cloud API 管理器中启用了相应 API。
将 Realtime Database SDK 添加至您的应用
在您的模块(应用级)Gradle 文件(通常是<project>/<app-module>/build.gradle.kts
或 <project>/<app-module>/build.gradle
)中,添加 Realtime Database Android 库的依赖项。我们建议使用 Firebase Android BoM 来实现库版本控制。
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // Add the dependency for the Realtime Database library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-database-ktx") }
借助 Firebase Android BoM,可确保您的应用使用的始终是 Firebase Android 库的兼容版本。
(替代方法) 在不使用 BoM 的情况下添加 Firebase 库依赖项
如果您选择不使用 Firebase BoM,则必须在每个 Firebase 库的依赖项行中指定相应的库版本。
请注意,如果您在应用中使用多个 Firebase 库,我们强烈建议您使用 BoM 来管理库版本,从而确保所有版本都兼容。
dependencies { // Add the dependency for the Realtime Database library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-database-ktx:20.2.2") }
Java
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // Add the dependency for the Realtime Database library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-database") }
借助 Firebase Android BoM,可确保您的应用使用的始终是 Firebase Android 库的兼容版本。
(替代方法) 在不使用 BoM 的情况下添加 Firebase 库依赖项
如果您选择不使用 Firebase BoM,则必须在每个 Firebase 库的依赖项行中指定相应的库版本。
请注意,如果您在应用中使用多个 Firebase 库,我们强烈建议您使用 BoM 来管理库版本,从而确保所有版本都兼容。
dependencies { // Add the dependency for the Realtime Database library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-database:20.2.2") }
配置 Realtime Database 安全规则
Realtime Database 提供了声明式规则语言,可用于定义数据的结构、将数据编入索引的方式,以及何时可以在其中读取和写入数据。
向数据库写入数据
使用 getInstance()
检索数据库的实例并引用要向其中写入数据的位置。
Kotlin+KTX
// Write a message to the database val database = Firebase.database val myRef = database.getReference("message") myRef.setValue("Hello, World!")
Java
// Write a message to the database FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference("message"); myRef.setValue("Hello, World!");
您可以通过这种方式将一系列数据类型保存到数据库,包括 Java 对象。保存对象时,来自任何 getter 的响应将保存为此位置的子位置。
从数据库读取数据
如需实时更新应用数据,您应该将 ValueEventListener
添加到您刚创建的引用中。
此类中的 onDataChange()
方法在附加监听器时触发一次,以后会在每次数据(包括子节点数据)发生更改时再次触发。
Kotlin+KTX
// 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>() Log.d(TAG, "Value is: $value") } override fun onCancelled(error: DatabaseError) { // Failed to read value Log.w(TAG, "Failed to read value.", error.toException()) } })
Java
// Read from the database myRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull 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(@NonNull DatabaseError error) { // Failed to read value Log.w(TAG, "Failed to read value.", error.toException()); } });
可选:配置 ProGuard
在应用中结合使用 Firebase Realtime Database 与 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 this rule to fit the structure of your app.
-keepclassmembers class com.yourcompany.models.** {
*;
}
如有关于 ProGuard 的问题需要帮助,请访问 Guardsquare 社区论坛,向专家寻求帮助。
为发布做好准备
发布应用之前,建议您浏览发布核对清单,确保您的应用已准备就绪!
请务必启用 App Check,确保只有您的应用可以访问您的数据库。
后续步骤
- 了解如何为 Realtime Database 设计数据结构
- 将数据扩充到多个数据库实例。
- 读取和写入数据。
- 在 Firebase 控制台中查看您的数据库。