Catch up on everthing we announced at this year's Firebase Summit. Learn more

在 Android 上安裝和設置

將您的應用連接到 Firebase

如果你還沒有,添加火力地堡到您的Android項目

創建數據庫

  1. 導航到的實時數據庫部分火力地堡控制台。系統會提示您選擇一個現有的 Firebase 項目。遵循數據庫創建工作流程。

  2. 為您的 Firebase 安全規則選擇一種啟動模式:

    測試模式

    適合開始使用移動和 Web 客戶端庫,但允許任何人讀取和覆蓋您的數據。測試後,請務必查看了解火力地堡實時數據庫規則部分。

    要開始使用 Web、Apple 或 Android SDK,請選擇測試模式。

    鎖定模式

    拒絕來自移動和 Web 客戶端的所有讀取和寫入。您經過身份驗證的應用程序服務器仍然可以訪問您的數據庫。

  3. 為數據庫選擇一個區域。根據您選擇的區域,數據庫命名空間將是形式的<databaseName>.firebaseio.com<databaseName>.<region>.firebasedatabase.app 。欲了解更多信息,請為您的項目選擇的位置

  4. 點擊完成

當您啟用實時數據庫,它還能夠在API的雲API經理

將實時數據庫 SDK 添加到您的應用程序

使用火力地堡Android的物料清單,聲明你的模塊(應用程序級)搖籃文件(通常為實時數據庫的Android庫的依賴app/build.gradle )。

爪哇

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:29.0.1')

    // 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'
}

通過使用火力地堡Android的物料清單,您的應用程序將始終使用火力地堡的Android庫的兼容版本。

(替代)聲明火力地堡庫依賴使用物料清單

如果您選擇不使用 Firebase BoM,則必須在其依賴項行中指定每個 Firebase 庫版本。

需要注意的是,如果你在你的應用程序使用多個火力地堡庫,我們強烈建議您使用的物料清單管理庫版本,以保證所有版本相互兼容。

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:20.0.3'
}

科特林+KTX

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:29.0.1')

    // 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'
}

通過使用火力地堡Android的物料清單,您的應用程序將始終使用火力地堡的Android庫的兼容版本。

(替代)聲明火力地堡庫依賴使用物料清單

如果您選擇不使用 Firebase BoM,則必須在其依賴項行中指定每個 Firebase 庫版本。

需要注意的是,如果你在你的應用程序使用多個火力地堡庫,我們強烈建議您使用的物料清單管理庫版本,以保證所有版本相互兼容。

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:20.0.3'
}

配置實時數據庫規則

實時數據庫提供了一種聲明性規則語言,允許您定義數據的結構、索引方式以及何時可以讀取和寫入數據。

寫入您的數據庫

檢索數據庫的使用實例getInstance()和引用您要寫入的位置。

爪哇

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

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

科特林+KTX

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

myRef.setValue("Hello, World!")

您可以通過這種方式將一系列數據類型保存到數據庫中,包括 Java 對象。當您保存一個對象時,來自任何 getter 的響應將被保存為該位置的子項。

從您的數據庫中讀取

為了讓實時應用數據更新,您應該在添加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());
    }
});

科特林+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

在您的應用中將 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 this rule to fit the structure of your app.
    -keepclassmembers class com.yourcompany.models.** {
      *;
    }

要獲取有關ProGuard的問題或問題的幫助,請訪問Guardsquare社區論壇從專家獲得幫助。

準備發布

啟動您的應用之前,我們通過我們的建議步行發布核對清單,以確保您的應用程序已經準備好去!

請務必啟用應用程序檢查,以確保只有您的應用程序可以訪問數據庫。

下一步