אם עדיין לא עשיתם זאת, מוסיפים את Firebase לפרויקט Android.
יצירת מסד נתונים
עוברים לקטע Realtime Database במסוף Firebase. תתבקשו לבחור פרויקט קיים ב-Firebase. פועלים לפי תהליך העבודה ליצירת מסד נתונים.
בוחרים מצב התחלה ל-Firebase Security Rules:
- מצב בדיקה
מתאים לתחילת העבודה עם ספריות הלקוח לנייד ולאינטרנט, אבל מאפשר לכל אחד לקרוא את הנתונים ולכתוב עליהם. אחרי הבדיקה, חשוב לקרוא את הקטע הסבר על הכללים של Firebase Realtime Database.
כדי להתחיל בעבודה עם SDK לאינטרנט, ל-Apple או ל-Android, בוחרים באפשרות testmode.
- מצב נעילה
דחייה של כל פעולות הקריאה והכתיבה מלקוחות בנייד ומלקוחות אינטרנט. שרתי האפליקציות המאומתים עדיין יכולים לגשת למסד הנתונים.
בוחרים מיקום למסד הנתונים.
בהתאם למיקום של מסד הנתונים, כתובת ה-URL של מסד הנתונים החדש תהיה באחד מהפורמטים הבאים:
(למסדי נתונים ב-DATABASE_NAME.firebaseio.com
us-central1
) (למסדי נתונים בכל המיקומים האחרים)DATABASE_NAME.REGION.firebasedatabase.app
לוחצים על סיום.
כשמפעילים את Realtime Database, ה-API מופעל גם במנהל Cloud API.
הוספת ה-SDK של Realtime Database לאפליקציה
בקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל<project>/<app-module>/build.gradle.kts
או <project>/<app-module>/build.gradle
), מוסיפים את התלות בספרייה Realtime Database ל-Android. מומלץ להשתמש ב-Firebase Android BoM כדי לשלוט בגרסאות הספרייה.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.7.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: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. כששומרים אובייקט, התשובות מכל פונקציות ה-getter יישמרו כצאצאים של המיקום הזה.
קריאה ממסד הנתונים
כדי שהנתונים של האפליקציה יתעדכנו בזמן אמת, צריך להוסיף את הערך ValueEventListener
למזהה שיצרתם.
השיטה onDataChange()
בכיתה הזו מופעלת פעם אחת כשהמאזין מצורף, ופעם נוספת בכל פעם שהנתונים משתנים, כולל הצאצאים.
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