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

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

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

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

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

    מצב בדיקה

    מתאימים לתחילת העבודה עם ספריות לקוח לנייד ולאינטרנט, אבל הוא מאפשר לכל אחד לקרוא ולהחליף את הנתונים שלכם. לאחר הבדיקה, מבצעים חשוב לקרוא את הכללים בנושא מסדי נתונים בזמן אמת ב-Firebase .

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

    מצב נעילה

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

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

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

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

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

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

כשמפעילים את 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:33.2.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, האפליקציה שלכם תשתמש תמיד בגרסאות תואמות של ספריות Android של Firebase.

(חלופה)  מוסיפים יחסי תלות לספריות של 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 אובייקטים. כששומרים אובייקט, התשובות של כל נמען יישמרו בתור הילדים במיקום הזה.

הקראה ממסד הנתונים שלך

כדי שנתוני האפליקציה שלך יתעדכנו בזמן אמת, צריך להוסיף ValueEventListener לקובץ העזר שיצרתם.

ה-method onDataChange() במחלקה הזו מופעלת פעם אחת כשה-listener מופעל בכל פעם שהנתונים משתנים, כולל הצאצאים.

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, צריך: לוקחים בחשבון את האופן שבו אובייקטים של המודל יעברו סריאליזציה וביטול סריאליזציה ערפול קוד (obfuscation). אם משתמשים ב-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 כדי לוודא רק האפליקציות שלכם יכולות לגשת למסדי הנתונים.

השלבים הבאים