קישור האפליקציה ל-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, מערכת Cloud API Manager מפעילה גם את ה-API.

הוספת Realtime Database SDK לאפליקציה

בקובץ 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:34.0.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:22.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. כששומרים אובייקט, התשובות מכל הפונקציות לקבלת נתונים יישמרו כפריטי צאצא במיקום הזה.

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

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

השלבים הבאים