หากคุณยังไม่ได้ดำเนินการ เพิ่ม Firebase ลงในโปรเจ็กต์ Android
สร้างฐานข้อมูล
ไปที่ส่วนRealtime Databaseของ คอนโซล Firebase ระบบจะแจ้งให้คุณเลือกโปรเจ็กต์ Firebase ที่มีอยู่ ทำตามขั้นตอนการสร้างฐานข้อมูล
เลือกโหมดเริ่มต้นสำหรับ Firebase Security Rules
- โหมดทดสอบ
เหมาะสำหรับการเริ่มต้นใช้งานไลบรารีของไคลเอ็นต์อุปกรณ์เคลื่อนที่และเว็บ แต่อนุญาตให้ทุกคนสามารถอ่านและเขียนทับข้อมูลของคุณ หลังการทดสอบ โปรดอ่านทำความเข้าใจกฎฐานข้อมูลเรียลไทม์ของ Firebase
หากต้องการเริ่มต้นใช้งาน SDK บนเว็บ, Apple หรือ Android ให้เลือก testmode
- โหมดล็อกขณะคุมสอบ
ปฏิเสธการอ่านและเขียนทั้งหมดจากไคลเอ็นต์อุปกรณ์เคลื่อนที่และเว็บ เซิร์ฟเวอร์แอปพลิเคชันที่ตรวจสอบสิทธิ์จะยังคงเข้าถึงฐานข้อมูลได้
เลือกตำแหน่งสำหรับฐานข้อมูล
URL ของฐานข้อมูลใหม่จะอยู่ในรูปแบบใดรูปแบบหนึ่งต่อไปนี้ โดยขึ้นอยู่กับตำแหน่งของฐานข้อมูล
(สำหรับ ฐานข้อมูลในDATABASE_NAME.firebaseio.com
us-central1
) (สำหรับฐานข้อมูลในตำแหน่งอื่นๆ ทั้งหมด)DATABASE_NAME.REGION.firebasedatabase.app
คลิกเสร็จสิ้น
เมื่อคุณเปิดใช้ Realtime Database จะเป็นการเปิดใช้ API ใน Cloud API Manager
เพิ่ม SDK Realtime Database ลงในแอป
ในไฟล์ 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.2.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:21.0.0") }
กำหนดค่า Realtime Database Security Rules
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 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 เพื่อให้มั่นใจได้ว่า มีเพียงแอปของคุณเท่านั้นที่เข้าถึงฐานข้อมูลได้
ขั้นตอนถัดไป
- ดูวิธีจัดโครงสร้างข้อมูล เป็นเวลา Realtime Database
- ปรับขนาดข้อมูลในอินสแตนซ์ฐานข้อมูลหลายรายการ
- อ่านและเขียนข้อมูล
- ดูฐานข้อมูลในคอนโซล Firebase