ربط تطبيقك بمنصّة 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، يتم أيضًا تفعيل واجهة برمجة التطبيقات في 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: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متعدّدة في تطبيقك، ننصحك بشدة باستخدام 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 Community للحصول على مساعدة من أحد الخبراء.

الاستعداد للإطلاق

قبل إطلاق تطبيقك، ننصحك بالاطّلاع على قائمة التحقّق الخاصة بالإطلاق للتأكّد من أنّ تطبيقك جاهز.

احرص على تفعيل App Check للمساعدة في ضمان عدم وصول أي تطبيقات أخرى إلى قواعد البيانات الخاصة بك.

الخطوات التالية