קישור האפליקציה ל-Firebase

אם עדיין לא עשיתם זאת, מוסיפים את Firebase לפרויקט Android.

יצירת מסד נתונים

  1. עוברים לקטע Realtime Database במסוף Firebase. תתבקשו לבחור פרויקט קיים ב-Firebase. פועלים לפי תהליך העבודה ליצירת מסד נתונים.

  2. בוחרים מצב התחלה ל-Firebase Security Rules:

    מצב בדיקה

    מתאים לתחילת העבודה עם ספריות הלקוח לנייד ולאינטרנט, אבל מאפשר לכל אחד לקרוא את הנתונים ולכתוב עליהם. אחרי הבדיקה, חשוב לקרוא את הקטע הסבר על הכללים של Firebase Realtime Database.

    כדי להתחיל בעבודה עם SDK לאינטרנט, ל-Apple או ל-Android, בוחרים באפשרות testmode.

    מצב נעילה

    דחייה של כל פעולות הקריאה והכתיבה מלקוחות בנייד ומלקוחות אינטרנט. שרתי האפליקציות המאומתים עדיין יכולים לגשת למסד הנתונים.

  3. בוחרים מיקום למסד הנתונים.

    בהתאם למיקום של מסד הנתונים, כתובת ה-URL של מסד הנתונים החדש תהיה באחד מהפורמטים הבאים:

    • DATABASE_NAME.firebaseio.com (למסדי נתונים ב-us-central1)

    • DATABASE_NAME.REGION.firebasedatabase.app (למסדי נתונים בכל המיקומים האחרים)

  4. לוחצים על סיום.

כשמפעילים את 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")
}
מחפשים מודול ספרייה ספציפי ל-Kotlin? החל מ-אוקטובר 2023 (Firebase BoM 32.5.0), מפתחי Kotlin ומפתחי Java יוכלו להסתמך על מודול הספרייה הראשי (פרטים נוספים זמינים בשאלות הנפוצות לגבי היוזמה הזו).

הגדרה של 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 כדי לוודא שרק לאפליקציות שלכם תהיה גישה למסדי הנתונים.

השלבים הבאים