אם עדיין לא הוספתם את Firebase לפרויקט Android, אתם צריכים להוסיף אותו.
יצירת מסד נתונים
במסוף Firebase, נכנסים אל Databases & Storage > מסד נתונים בזמן אמת.
לוחצים על Create 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), מוסיפים את התלות בספריית Realtime Database ל-Android. מומלץ להשתמש ב-Firebase Android BoM כדי לשלוט בניהול גרסאות של הספרייה.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.0.1")) // 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:23.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. כששומרים אובייקט, התגובות מכל פונקציות ה-getter נשמרות כצאצאים של המיקום הזה.
לקרוא ממסד הנתונים שלכם
כדי שנתוני האפליקציה יתעדכנו בזמן אמת, צריך להוסיף ValueEventListener להפניה שיצרתם.
השיטה onDataChange() במחלקה הזו מופעלת פעם אחת כשמאזין האירועים מצורף, ופעם נוספת בכל פעם שהנתונים משתנים, כולל הצאצאים.
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 כדי לוודא שרק לאפליקציות שלכם יש גישה למסדי הנתונים.