將您的應用程序連接到Firebase
創建一個數據庫
如果尚未創建Firebase項目,請執行以下操作:在Firebase控制台中,單擊Add project ,然後按照屏幕上的說明創建Firebase項目或將Firebase服務添加到現有的Google Cloud項目。
導航到Firebase控制台的“實時數據庫”部分。系統將提示您選擇一個現有的Firebase項目。遵循數據庫創建工作流程。
為您的Firebase安全規則選擇一種啟動模式:
- 測試模式
適用於移動和Web客戶端庫入門,但允許任何人讀取和覆蓋您的數據。測試之後,請確保查看“了解Firebase實時數據庫規則”部分。
要開始使用Web,iOS或Android SDK,請選擇測試模式。
- 鎖定模式
拒絕來自移動和Web客戶端的所有讀取和寫入。經過身份驗證的應用程序服務器仍然可以訪問數據庫。
選擇數據庫的區域。根據您對區域的選擇,數據庫名稱空間的格式為
<dbname>.firebaseio.com
或<dbname>.<regioncode>.firebasedatabase.app
。有關更多信息,請參見選擇項目的位置。單擊完成。
啟用實時數據庫後,它還會在Cloud API Manager中啟用API 。
將Realtime Database SDK添加到您的應用中
使用Firebase Android BoM ,在模塊(應用程序級)Gradle文件(通常為app/build.gradle
)中聲明Realtime Database Android庫的依賴app/build.gradle
。 爪哇
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:26.3.0') // Declare 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 { // Declare 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:19.6.0' }
Kotlin + KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:26.3.0') // Declare 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 { // Declare 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:19.6.0' }
配置實時數據庫規則
實時數據庫提供了一種聲明性規則語言,使您可以定義數據的結構方式,索引方式以及何時可以讀取和寫入數據。
寫入數據庫
使用getInstance()
檢索數據庫的實例,並引用要寫入的位置。
爪哇
// Write a message to the database FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference("message"); myRef.setValue("Hello, World!");
Kotlin + KTX
// Write a message to the database val database = Firebase.database val myRef = database.getReference("message") myRef.setValue("Hello, World!")
您可以通過這種方式將一系列數據類型(包括Java對象)保存到數據庫中。保存對象時,來自任何獲取程序的響應都將另存為該位置的子級。
從數據庫中讀取
為了使您的應用程序數據實時更新,您應該將ValueEventListener
添加到剛創建的引用中。
附加了偵聽器後,將觸發此類中的onDataChange()
方法,並且每次更改數據(包括子級)時都會再次觸發。
爪哇
// 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 + 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()) } })
可選:配置ProGuard
在與ProGuard一起在應用程序中使用Firebase Realtime Database時,您需要考慮混淆後如何對模型對象進行序列化和反序列化。如果使用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控制台中查看數據庫。