أضِف Firebase إلى مشروع Android الخاص بك، إذا لم يسبق لك إجراء ذلك.
إنشاء قاعدة بيانات
انتقِل إلى قسم قاعدة بيانات الوقت الفعلي ضمن وحدة تحكُّم Firebase. سيُطلب منك اختيار مشروع حالي في Firebase. اتّبع سير عمل إنشاء قاعدة البيانات.
اختَر وضع بدء لقواعد أمان Firebase:
- وضع الاختبار
يُعد هذا الخيار مناسبًا لبدء استخدام مكتبات برامج الأجهزة الجوّالة والويب، ولكنه يتيح لأي شخص قراءة بياناتك واستبدالها. بعد الاختبار، تأكَّد من مراجعة قسم فهم قواعد قاعدة بيانات Firebase في الوقت الفعلي.
لبدء استخدام الويب أو حزمة تطوير البرامج (SDK) من Apple أو Android، اختَر testmode.
- وضع القفل
رفض جميع عمليات القراءة والكتابة من عملاء الأجهزة الجوّالة والويب. لا يزال بإمكان خوادم التطبيقات التي تمت مصادقتها الوصول إلى قاعدة البيانات.
اختَر موقعًا لقاعدة البيانات.
واستنادًا إلى موقع قاعدة البيانات، سيكون عنوان URL لقاعدة البيانات الجديدة بأحد الأشكال التالية:
(لقواعد البيانات فيDATABASE_NAME.firebaseio.com
us-central1
) (لقواعد البيانات في جميع المواقع الجغرافية الأخرى)DATABASE_NAME.REGION.firebasedatabase.app
انقر على تم.
في حال تفعيل قاعدة بيانات الوقت الفعلي، يتم أيضًا تفعيل واجهة برمجة التطبيقات في Cloud API Manager.
إضافة حزمة تطوير البرامج (SDK) لقاعدة البيانات في الوقت الفعلي إلى تطبيقك
في ملف Gradle للوحدة (على مستوى التطبيق) (عادةً<project>/<app-module>/build.gradle.kts
أو
<project>/<app-module>/build.gradle
)،
أضِف الدالة التبعية لمكتبة "قاعدة بيانات الوقت الفعلي" لنظام التشغيل Android. ننصحك باستخدام برنامج Firebase Android BoM
للتحكّم في إصدارات المكتبة.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.1.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") }
باستخدام إطار عمل Android BoM، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Android في Firebase.
(بديل) أضِف تبعيات مكتبة Firebase بدون استخدام قائمة BoM.
إذا اختَرت عدم استخدام قائمة مشروعات Firebase، يجب تحديد كل إصدار من إصدارات مكتبة 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") }
تهيئة قواعد أمان قاعدة بيانات الوقت الفعلي
توفر قاعدة بيانات الوقت الفعلي لغة قواعد تعريفية تسمح لك بتحديد كيفية هيكلة بياناتك، وكيفية فهرستها، ومتى يمكن قراءة بياناتك والكتابة إليها.
الكتابة في قاعدة البيانات
استرجع مثيل قاعدة البيانات باستخدام 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 في الوقت الفعلي" في تطبيقك مع 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 للمساعدة في ضمان وصول تطبيقاتك فقط إلى قواعد بياناتك.
الخطوات التالية
- تعرَّف على كيفية هيكلة البيانات ضِمن "قاعدة بيانات الوقت الفعلي"
- توسيع نطاق بياناتك على مستوى مثيلات قاعدة بيانات متعددة:
- قراءة البيانات وكتابتها
- الاطّلاع على قاعدة البيانات في "وحدة تحكُّم Firebase"