ربط تطبيقك بمنصّة Firebase

أضِف Firebase إلى مشروع Android الخاص بك، في حال لم يسبق لك إجراء ذلك.

إنشاء قاعدة بيانات

  1. في وحدة تحكّم Firebase، انتقِل إلى قواعد البيانات ومساحة التخزين > قاعدة بيانات الوقت الفعلي.

  2. انقر على إنشاء قاعدة بيانات.

  3. اختَر وضع بدء لجهاز Firebase Security Rules:

    الوضع التجريبي

    هذه القواعد مناسبة للبدء في استخدام مكتبات برامج الأجهزة الجوّالة والويب، ولكنّها تسمح لأي شخص بقراءة بياناتك والكتابة فوقها. بعد الاختبار، احرص على مراجعة قسم فهم قواعد "قاعدة بيانات Firebase في الوقت الفعلي".

    لبدء استخدام حزمة تطوير البرامج (SDK) للويب أو Apple أو Android، اختَر وضع الاختبار.

    وضع القفل

    يتم رفض جميع عمليات القراءة والكتابة من عملاء الأجهزة الجوّالة والويب. سيظل بإمكان خوادم التطبيقات التي تمت مصادقتها الوصول إلى قاعدة بياناتك.

  4. اختَر موقعًا جغرافيًا لقاعدة البيانات.

    استنادًا إلى موقع قاعدة البيانات، سيكون عنوان URL لقاعدة البيانات الجديدة بأحد الأشكال التالية:

    • DATABASE_NAME.firebaseio.com (لقواعد البيانات في us-central1)

    • DATABASE_NAME.REGION.firebasedatabase.app (لقواعد البيانات في جميع المواقع الجغرافية الأخرى)

  5. انقر على تم.

عند تفعيل Realtime Database، يتم أيضًا تفعيل واجهة برمجة التطبيقات في مدير 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:35.0.1"))

    // 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:23.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. عند حفظ عنصر، سيتم حفظ الردود من أي دوال getter كعناصر فرعية لهذا الموقع.

القراءة من قاعدة البيانات

لتحديث بيانات تطبيقك في الوقت الفعلي، عليك إضافة 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 للمساعدة في ضمان أنّ تطبيقاتك فقط هي التي يمكنها الوصول إلى قواعد بياناتك.

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