تتيح لك حِزم تطوير البرامج (SDK) لعملاء Firebase Data Connect طلب طلبات البحث وعمليات التحويل من جهة الخادم مباشرةً من تطبيق Firebase. يمكنك إنشاء حزمة تطوير برامج (SDK) مخصّصة للعملاء في وقتٍ موازي أثناء تصميم المخططات وطلبات البحث وعمليات التحويل التي يتم نشرها في خدمة Data Connect. بعد ذلك، يمكنك دمج الطرق من حزمة SDK هذه في منطق العميل الخاص بك.
كما ذكرنا في مكان آخر، من المهم الإشارة إلى أنّ Data Connect طلبات البحث والطفرات لا يتم إرسالها بواسطة رمز العميل ويتم تنفيذها على الخادم. بدلاً من ذلك، عند نشرها، يتم تخزين عمليات Data Connect على الخادم مثل دوال Cloud. وهذا يعني أنّك بحاجة إلى نشر التغييرات المقابلة من جهة العميل لتجنّب إيقاف المستخدمين الحاليين (على سبيل المثال، في الإصدارات القديمة من التطبيق).
ولهذا السبب يوفّر لك Data Connect بيئة للمطوّرين التي تتيح لك وضع نماذج أولية للمخططات والاستعلامات والطفرات التي نشرها الخادم. تنشئ الأداة أيضًا حِزم تطوير برامج (SDK) من جهة العميل تلقائيًا، أثناء إنشاء نموذج أولي لها.
وعند تكرار تحديثات الخدمة وتطبيقات العميل، التحديثات من جهة العميل جاهزة للنشر.
إنشاء حزمة تطوير البرامج (SDK) لـ Kotlin
كما هو الحال مع معظم مشاريع Firebase، العمل على عميل Firebase Data Connect الرمز يحدث في دليل مشروع محلي. يتم تحديث تُعد إضافة Data Connect VS Code وواجهة سطر الأوامر Firebase مهمة محلية. لإنشاء رمز العميل وإدارته.
ترتبط خيارات إنشاء حزمة SDK بعدة إدخالات في dataconnect.yaml
ملف
الذي تم إنشاؤه عند بدء مشروعك.
إعداد عملية إنشاء حزمة تطوير البرامج (SDK)
فيconnector.yaml
، أضِف outputDir
وpackage
و (بالنسبة إلى حزمة تطوير البرامج (SDK) على الويب)
packageJsonDir
.
connectorId: movies
generate:
kotlinSdk:
outputDir: ../../../src/main/java/com/myapplication
package: com.myapplication
استبدل outputDir
بمسار الدليل الذي تم إنشاء الملف
وضع الرمز البرمجي؛ هذا المسار يتعلق بالدليل الذي يحتوي على الدليل
ملف connector.yaml
نفسه. استبدال package
بحزمة Kotlin
لاستخدامها في الملفات التي تم إنشاؤها، أو حذف package
لاستخدام
طرد.
تعديل حِزم تطوير البرامج (SDK) أثناء إنشاء النماذج الأولية
إذا كنت بصدد إنشاء النماذج الأولية بشكل تفاعلي باستخدام إضافة Data Connect في VS Code
ومحاكي Data Connect، يتم تلقائيًا
إنشاء ملفات مصدر حزمة تطوير البرامج (SDK) وتعديلها أثناء تعديل ملفات .gql
التي تحدّد المخططات وطلبات البحث
والعمليات. ويمكن أن تكون هذه ميزة مفيدة في سير العمل (إعادة التحميل).
.gql
وتعديل مصادر SDK
تلقائيًا أيضًا.
بدلاً من ذلك، يمكنك استخدام سطر الأوامر لإعادة إنشاء حِزم تطوير البرامج (SDK) عند تغيير ملفات .gql:
firebase dataconnect:sdk:generate --watch
إنشاء حزم تطوير البرامج (SDK) للدمج والإصدار العلني
في بعض السيناريوهات، مثل إعداد مصادر المشاريع لإرسالها إلى اختبارات التكامل المستمر، يمكنك استدعاء Firebase CLI لإجراء تحديث مجمّع.
وفي هذه الحالات، استخدِم السمة firebase dataconnect:sdk:generate
.
إعداد رمز العميل
دمج Data Connect في رمز العميل
لإعداد رمز العميل لاستخدام Data Connect وحزمة تطوير البرامج (SDK) التي أنشأتها، يُرجى اتّباع الخطوات التالية: اتبع أولاً تعليمات الإعداد العادي لمنصة Firebase
بعد ذلك، أضِف ما يلي إلى قسم plugins
في
app/build.gradle.kts
:
// The Firebase team tests with version 1.8.22; however, other 1.8 versions,
// and all newer versions are expected work too.
kotlin("plugin.serialization") version "1.8.22" // MUST match the version of the Kotlin compiler
بعد ذلك، أضِف ما يلي إلى قسم dependencies
في
app/build.gradle.kts
:
implementation("com.google.firebase:firebase-dataconnect:16.0.0-beta01")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.5.1")
implementation("com.google.firebase:firebase-auth:23.0.0") // Optional
implementation("com.google.firebase:firebase-appcheck:18.0.0") // Optional
إعداد Data Connect حزمة تطوير البرامج (SDK) لنظام التشغيل Android
يمكنك إعداد مثيل Data Connect باستخدام المعلومات التي تُستخدم لإعداد ربط البيانات (جميعها متاحة في وحدة تحكُّم Firebase) علامة التبويب "ربط البيانات").
عنصر ConnectorConfig
تتطلّب حزمة تطوير البرامج (SDK) كائن ضبط موصل.
يتم إنشاء هذا العنصر تلقائيًا من serviceId
وlocation
في
dataconnect.yaml
، وconnectorId
في connector.yaml
.
جارٍ الحصول على مثيل موصل
الآن بعد أن أعددت كائن ضبط، احصل على Data Connect
مثيل الموصل. سيتم إنشاء رمز الموصل بواسطة
محاكي "Data Connect" إذا كان اسم الموصِّل هو movies
وكانت
حزمة Kotlin هي com.myapplication
، كما هو محدّد في connector.yaml
، يمكنك
استرداد عنصر الموصِّل من خلال الاتصال:
val connector = com.myapplication.MoviesConnector.instance
تنفيذ طلبات البحث والطفرات
باستخدام كائن الموصِّل، يمكنك تنفيذ الاستعلامات والمتغيرات كما هو موضح في رمز مصدر GraphQL. لنفترض أن الموصل لديه العمليات التالية محددة:
mutation createMovie($title: String!, $releaseYear: Int!, $genre: String!, $rating: Int!) {
movie_insert(data: {
title: $title
releaseYear: $releaseYear
genre: $genre
rating: $rating
})
}
query getMovieByKey($key: Movie_Key!) {
movie(key: $key) { id title }
}
query listMoviesByGenre($genre: String!) {
movies(where: {genre: {eq: $genre}}) {
id
title
}
}
فعندئذ يمكنك إنشاء فيلم واسترداده على النحو التالي:
val connector = MoviesConnector.instance
val addMovieResult1 = connector.createMovie.execute(
title = "Empire Strikes Back",
releaseYear = 1980,
genre = "Sci-Fi",
rating = 5
)
val movie1 = connector.getMovieByKey.execute(addMovieResult1.data.key)
println("Empire Strikes Back: ${movie1.data.movie}")
يمكنك أيضًا استرداد أفلام متعددة:
val connector = MoviesConnector.instance
val addMovieResult2 = connector.createMovie.execute(
title="Attack of the Clones",
releaseYear = 2002,
genre = "Sci-Fi",
rating = 5
)
val listMoviesResult = connector.listMoviesByGenre.execute(genre = "Sci-Fi")
println(listMoviesResult.data.movies)
يمكنك أيضًا جمع Flow
لن ينتج عن ذلك أي نتيجة إلا عند استرجاع نتيجة
طلب بحث جديد باستخدام طلب إلى طريقة execute()
لطلب البحث.
val connector = MoviesConnector.instance
connector.listMoviesByGenre.flow(genre = "Sci-Fi").collect { data ->
println(data.movies)
}
connector.createMovie.execute(
title="A New Hope",
releaseYear = 1977,
genre = "Sci-Fi",
rating = 5
)
connector.listMoviesByGenre.execute(genre = "Sci-Fi") // will cause the Flow to get notified
إنشاء نموذج أولي لتطبيق Android واختباره
إعداد التطبيقات لاستخدام محاكي محلي
يمكنك استخدام المحاكي Data Connect، سواء كان من خلال إضافة Data Connect VS Code أو من واجهة سطر الأوامر.
تكون قياسات التطبيق للاتصال بالمحاكي هي نفسها في كلا السيناريوهين.
val connector = MoviesConnector.instance
// Connect to the emulator on "10.0.2.2:9399"
connector.dataConnect.useEmulator()
// (alternatively) if you're running your emulator on non-default port:
connector.dataConnect.useEmulator(port = 9999)
// Make calls from your app
للتبديل إلى موارد الإنتاج، عليك تعليق الأسطر المتعلّقة بالاتصال بالemualtor.
أنواع البيانات في حِزم SDK من Data Connect
يمثّل خادم Data Connect بيانات GraphQL الشائعة والمخصّصة الأنواع. يتم تمثيل ذلك في حزمة SDK على النحو التالي.
نوع ربط البيانات | Kotlin |
---|---|
سلسلة | سلسلة |
Int | Int (32 بت) |
عائم | مزدوج (قيمة عددية عائمة بسعة 64 بت) |
منطقي | منطقي |
معرِّف فريد عالمي (UUID) | java.util.UUID |
التاريخ | java.util.Date |
الطابع الزمني | com.google.firebase.Timestamp |
إنت 64 | طويلة |
أي | com.google.firebase.dataconnect.AnyValue |