Check out what’s new from Firebase at Google I/O 2022. Learn more

การติดตั้ง & ตั้งค่าบน Android

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

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

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

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

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

    โหมดทดสอบ

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

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

    โหมดล็อค

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

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

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

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

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

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

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

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

ใช้ Firebase Android BoM ประกาศการพึ่งพาสำหรับไลบรารี Realtime Database Android ใน ไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติ app/build.gradle )

Java

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:30.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'
}

เมื่อใช้ Firebase Android BoM แอปของคุณจะใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้เสมอ

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

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

โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลายรายการ ในแอปของคุณ เราขอแนะนำอย่างยิ่งให้ใช้ BoM เพื่อจัดการเวอร์ชันของไลบรารี ซึ่งจะทำให้มั่นใจได้ว่าทุกเวอร์ชันจะเข้ากันได้

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.5'
}

Kotlin+KTX

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:30.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'
}

เมื่อใช้ Firebase Android BoM แอปของคุณจะใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้เสมอ

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

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

โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลายรายการ ในแอปของคุณ เราขอแนะนำอย่างยิ่งให้ใช้ BoM เพื่อจัดการเวอร์ชันของไลบรารี ซึ่งจะทำให้มั่นใจได้ว่าทุกเวอร์ชันจะเข้ากันได้

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.5'
}

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

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

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

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

Java

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

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

Kotlin+KTX

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

myRef.setValue("Hello, World!")

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

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

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

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

Java

// 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());
    }
});

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())
    }
})

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

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