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