หากยังไม่ได้ดำเนินการ ให้เพิ่ม 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 ด้วย
เพิ่ม 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.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 เวอร์ชันที่เข้ากันได้อยู่เสมอ
(ทางเลือก) เพิ่มการอ้างอิงไลบรารี Firebase โดยไม่ใช้ BoM
หากเลือกไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันของไลบรารี Firebase แต่ละรายการ ในบรรทัดการอ้างอิง
โปรดทราบว่าหากคุณใช้ไลบรารี 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.0") }
กำหนดค่า 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 เพื่อช่วยให้มั่นใจว่า มีเพียงแอปของคุณเท่านั้นที่เข้าถึงฐานข้อมูลได้
ขั้นตอนถัดไป
- ดูวิธีจัดโครงสร้างข้อมูล สำหรับ Realtime Database
- ปรับขนาดข้อมูลในอินสแตนซ์ฐานข้อมูลหลายรายการ
- อ่านและเขียนข้อมูล
- ดูฐานข้อมูลในFirebaseคอนโซล