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

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

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

  1. ไปที่ส่วนฐานข้อมูลเรียลไทม์ของ คอนโซล 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 เราขอแนะนำให้ใช้ BoM ของ Firebase Android เพื่อควบคุมการกำหนดเวอร์ชันไลบรารี

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

    // 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 สามารถ ขึ้นอยู่กับโมดูลไลบรารีหลัก (ดูรายละเอียดได้ที่ คําถามที่พบบ่อยเกี่ยวกับโครงการริเริ่มนี้)

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

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 ออบเจ็กต์ เมื่อคุณบันทึกออบเจ็กต์ การตอบสนองจาก Getters จะได้รับการบันทึกเป็น ย่อยของสถานที่นี้

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

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

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