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

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

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

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

  2. เลือกโหมดเริ่มต้นสำหรับ Firebase Security Rules

    โหมดทดสอบ

    เหมาะสําหรับการเริ่มต้นใช้งานไลบรารีของไคลเอ็นต์อุปกรณ์เคลื่อนที่และเว็บ แต่จะอนุญาตให้ทุกคนอ่านและเขียนทับข้อมูลของคุณได้ หลังจากทดสอบแล้ว อย่าลืมอ่านส่วนทำความเข้าใจกฎของฐานข้อมูลเรียลไทม์ของ 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:34.11.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 แต่ละรายการ ในบรรทัดทรัพยากร 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:22.0.1")
}

กำหนดค่า Realtime Database Security Rules

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

เขียนไปยังฐานข้อมูล

เรียกอินสแตนซ์ของฐานข้อมูลโดยใช้ getInstance() และ อ้างอิงตำแหน่งที่ต้องการเขียน

Kotlin

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

Kotlin

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

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