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

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

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

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

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

  3. اختَر وضعًا لبدء استخدام Firebase Security Rules

    وضع الاختبار

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

    .

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

    وضع القفل

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

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

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

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

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

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

عند تفعيل 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.12.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.1")
}

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

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