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

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

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

  1. انتقِل إلى القسم Realtime Database في وحدة تحكّم Firebase. سيُطلب منك اختيار مشروع حالي على Firebase. اتّبِع سير عمل إنشاء قاعدة البيانات.

  2. اختَر وضعًا أوليًا لتطبيق Firebase Security Rules:

    وضع الاختبار

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

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

    وضع القفل

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

  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:33.6.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: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 إلى المرجع الذي أنشأته للتو.

يتم تشغيل طريقة onDataChange() في هذه الفئة مرة واحدة عند تثبيت المستمع ومرة أخرى في كل مرة تتغيّر فيها البيانات، بما في ذلك العناصر الفرعية.

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

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