เชื่อมต่อแอปกับ Firebase

เพิ่ม Firebase ลงในโปรเจ็กต์ Android หากยังไม่ได้ทำ

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

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

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

    โหมดทดสอบ

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

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

    โหมดล็อกขณะคุมสอบ

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

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

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

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

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

  4. คลิกเสร็จ

เมื่อคุณเปิดใช้ Realtime Database จะเป็นการเปิดใช้ API ใน Cloud API Manager ด้วย

เพิ่ม Realtime Database SDK ลงในแอป

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

dependencies {
    // Import the BoM for the Firebase platform
    implementation(platform("com.google.firebase:firebase-bom:33.0.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 เวอร์ชันที่เข้ากันได้เสมอ

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

หากเลือกไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดทรัพยากร Dependency

โปรดทราบว่าหากคุณใช้ไลบรารี 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:21.0.0")
}
หากกำลังมองหาโมดูลไลบรารีสำหรับ 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 เมื่อคุณบันทึกออบเจ็กต์ ระบบจะบันทึกการตอบสนองจาก Getter ทั้งหมดเป็นระดับย่อยของตำแหน่งนี้

อ่านจากฐานข้อมูล

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

ระบบจะทริกเกอร์เมธอด onDataChange() ในชั้นเรียนนี้ 1 ครั้งเมื่อมีการแนบ 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 ในแอปร่วมกับ 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 เพื่อให้มั่นใจว่า เฉพาะแอปของคุณเท่านั้นที่จะเข้าถึงฐานข้อมูลได้

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