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