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