เชื่อมต่อแอพของคุณกับ Firebase

หากคุณยังไม่ได้ เพิ่ม Firebase ในโครงการ Android ของคุณ

สร้างฐานข้อมูล

  1. ไปที่ส่วน ฐานข้อมูลเรียลไทม์ ของ คอนโซล Firebase คุณจะได้รับแจ้งให้เลือกโปรเจ็กต์ Firebase ที่มีอยู่ ปฏิบัติตามขั้นตอนการสร้างฐานข้อมูล

  2. เลือกโหมดเริ่มต้นสำหรับกฎความปลอดภัยของ Firebase:

    โหมดทดสอบ

    เหมาะสำหรับการเริ่มต้นใช้งานไลบรารีไคลเอนต์บนมือถือและเว็บ แต่อนุญาตให้ใครก็ตามสามารถอ่านและเขียนทับข้อมูลของคุณได้ หลังการทดสอบ อย่าลืมอ่านส่วน ทำความเข้าใจกฎฐานข้อมูลเรียลไทม์ของ Firebase

    หากต้องการเริ่มต้นใช้งานเว็บ, Apple หรือ Android SDK ให้เลือกโหมดทดสอบ

    โหมดล็อค

    ปฏิเสธการอ่านและเขียนทั้งหมดจากไคลเอนต์มือถือและเว็บ แอปพลิเคชันเซิร์ฟเวอร์ที่ได้รับการรับรองความถูกต้องของคุณยังคงสามารถเข้าถึงฐานข้อมูลของคุณได้

  3. เลือกตำแหน่งสำหรับฐานข้อมูล

    ขึ้นอยู่กับ ตำแหน่งของฐานข้อมูล URL สำหรับฐานข้อมูลใหม่จะอยู่ในรูปแบบใดรูปแบบหนึ่งต่อไปนี้:

    • DATABASE_NAME .firebaseio.com (สำหรับฐานข้อมูลใน us-central1 )

    • DATABASE_NAME . REGION .firebasedatabase.app (สำหรับฐานข้อมูลในตำแหน่งอื่นทั้งหมด)

  4. คลิก เสร็จสิ้น

เมื่อคุณเปิดใช้งานฐานข้อมูลเรียลไทม์ จะเป็นการเปิดใช้งาน API ใน Cloud API Manager ด้วย

เพิ่ม Realtime Database SDK ให้กับแอปของคุณ

ใน ไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ <project>/<app-module>/build.gradle.kts หรือ <project>/<app-module>/build.gradle ) ให้เพิ่มการพึ่งพาสำหรับฐานข้อมูลเรียลไทม์ ไลบรารี่สำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมเวอร์ชันไลบรารี

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

    // 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 เวอร์ชันที่เข้ากันได้เสมอ

(ทางเลือก) เพิ่มการพึ่งพาไลบรารี Firebase โดยไม่ ใช้ BoM

หากคุณเลือกที่จะไม่ใช้ 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.3.1")
}
กำลังมองหาโมดูลไลบรารีเฉพาะของ Kotlin อยู่ใช่ไหม? เริ่มตั้งแต่ เดือนตุลาคม 2023 (Firebase BoM 32.5.0) ทั้งนักพัฒนา Kotlin และ Java สามารถพึ่งพาโมดูลไลบรารีหลักได้ (สำหรับรายละเอียด โปรดดู คำถามที่พบบ่อยเกี่ยวกับโครงการริเริ่มนี้ )

กำหนดค่ากฎความปลอดภัยของฐานข้อมูลเรียลไทม์

ฐานข้อมูลเรียลไทม์มีภาษากฎการประกาศที่ช่วยให้คุณกำหนดได้ว่าข้อมูลของคุณควรมีโครงสร้างอย่างไร ควรจัดทำดัชนีอย่างไร และเมื่อใดที่สามารถอ่านและเขียนข้อมูลของคุณได้

เขียนลงในฐานข้อมูลของคุณ

ดึงอินสแตนซ์ของฐานข้อมูลของคุณโดยใช้ 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 เมื่อคุณบันทึกออบเจ็กต์ การตอบสนองจากผู้ได้รับใดๆ จะถูกบันทึกเป็นรายการย่อยของตำแหน่งนี้

อ่านจากฐานข้อมูลของคุณ

หากต้องการอัปเดตข้อมูลแอปแบบเรียลไทม์ คุณควรเพิ่ม ValueEventListener ให้กับข้อมูลอ้างอิงที่คุณเพิ่งสร้างขึ้น

เมธอด onDataChange() ในคลาสนี้จะถูกทริกเกอร์หนึ่งครั้งเมื่อมีการแนบ Listener และจะเกิดขึ้นอีกครั้งทุกครั้งที่ข้อมูลเปลี่ยนแปลง รวมถึงลูกๆ ด้วย

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 เพื่อให้แน่ใจว่ามีเพียงแอปของคุณเท่านั้นที่สามารถเข้าถึงฐานข้อมูลของคุณได้

ขั้นตอนถัดไป