تتيح لك حِزم تطوير البرامج (SDK) لعملاء Firebase Data Connect طلب طلبات البحث وعمليات التحويل من جهة الخادم مباشرةً من تطبيق Firebase. يمكنك إنشاء حزمة تطوير برامج (SDK) مخصّصة للعملاء في وقتٍ موازي أثناء تصميم المخططات وطلبات البحث وعمليات التحويل التي يتم نشرها في خدمة Data Connect. بعد ذلك، يمكنك دمج طرق من حزمة SDK هذه في منطق العميل.
كما ذكرنا في مكان آخر، من المهم الإشارة إلى أنّ Data Connect طلبات البحث والطفرات لا يتم إرسالها بواسطة رمز العميل ويتم تنفيذها على الخادم. بدلاً من ذلك، عند نشرها، يتم تخزين عمليات Data Connect على الخادم مثل "وظائف السحابة الإلكترونية". وهذا يعني أنّك بحاجة إلى نشر التغييرات المقابلة من جهة العميل لتجنّب إيقاف المستخدمين الحاليين (على سبيل المثال، في الإصدارات القديمة من التطبيق).
لهذا السبب، يوفّر لك Data Connect بيئة مطوّرين وأدوات تسمح لك بإنشاء نماذج أولية للمخططات وطلبات البحث والتغييرات التي يتم نشرها على الخادم. وتنشئ هذه الأداة أيضًا حِزم تطوير البرامج (SDK) من جهة العميل تلقائيًا أثناء إنشاء النماذج الأولية.
بعد تكرار التحديثات على تطبيقَي الخدمة والعملاء، تصبح التحديثات من جهة الخادم وجانب العميل جاهزة للنشر.
إنشاء حزمة تطوير البرامج (SDK) لتطبيق Swift
كما هو الحال مع معظم مشاريع Firebase، يتم تنفيذ العمل على Firebase Data Connect العميل الرمز البرمجي في دليل مشروع على الجهاز. إنّ كلًّا من Firebase CLI وإضافة Data Connect في VS Code مهمّان على مستوى الأدوات المحلية لإنشاء رمز العميل وإدارته.
ترتبط خيارات إنشاء حزمة SDK بعدة إدخالات في dataconnect.yaml
ملف
الذي تم إنشاؤه عند بدء مشروعك.
إعداد عملية إنشاء حزمة تطوير البرامج (SDK)
فيconnector.yaml
، أضِف outputDir
وpackage
و (بالنسبة إلى حزمة تطوير البرامج (SDK) على الويب)
packageJsonDir
.
connectorId: "movies"
generate:
swiftSdk:
outputDir: "../movies-generated"
package: "Movies"
outputDir
لتحديد المكان الذي يجب أن يتم فيه إنشاء حزمة SDK. في حال عدم تحديده، يتم استخدام مجلد الموصِّل كدليل الإخراج التلقائي.
package
يحدِّد اسم الحزمة التي سيتم إنشاؤها. سيُنشئ أداة الإنشاء
مجلدًا باسم الحزمة يحتوي على Package.swift
والرمز الذي تم إنشاؤه.
observablePublisher
(اختيارية) تحدّد الناشر في Observable المطلوب استخدامه في
مراجع طلبات البحث. القيم المحتمَلة هي observableMacro
(الإصدار 17 من نظام التشغيل iOS والإصدارات الأحدث) و
observableObject
(الإصدارات الأقدم من نظام التشغيل iOS). القيمة التلقائية، في حال عدم تحديد أي قيمة، هي
observableMacro
.
تعديل حِزم تطوير البرامج (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 وحزمة تطوير البرامج (SDK) التي تم إنشاؤها، عليك أولاً اتّباع تعليمات الإعداد العادية لمنصّة Firebase.
بعد ذلك، افتح مساحة عمل تطبيقك باستخدام Xcode.
في شريط التنقّل العلوي، اختَر ملف > إضافة متطلّبات الحزمة > إضافة
ملف محلي، ثم اختَر المجلد الذي يحتوي على ملف المصدر
Package.swift
الذي تم إنشاؤه.
إعداد حزمة تطوير البرامج (SDK) لنظام التشغيل iOS من Data Connect
ابدأ تشغيل مثيل Data Connect باستخدام المعلومات التي استخدَمتها لإعداد Data Connect (كلّها متوفّرة في Firebase console علامة التبويب Data Connect).
الحصول على نسخة من الموصِّل
سينشئ محاكي
Data Connect رمز الموصّل. إذا كان اسم الموصِّل هو movies
وكانت
الحزمة هي movies
، كما هو محدّد في connector.yaml
، يمكنك
استرداد عنصر الموصِّل من خلال الاتصال:
let connector = DataConnect.moviesConnector
تنفيذ طلبات البحث والطفرات
باستخدام عنصر الموصّل، يمكنك تنفيذ طلبات البحث والتغييرات كما هو محدّد في ملف برمجة تطبيقات 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
}
}
يمكنك بعد ذلك إنشاء فيلم باتّباع الخطوات التالية:
let mutationResult = try await connector.createMovieMutation.execute(
title: "Empire Strikes Back",
releaseYear: 1980,
genre: "Sci-Fi",
rating: 5)
print("Movie ID: \(mutationResult.data.movie_insert.id)")
لاسترداد فيلم، ستستخدم مرجع طلب بحث. جميع مراجع طلبات البحث هي
ناشرون قابلون للتتبّع. استنادًا إلى الناشر الذي تم ضبطه (راجِع connector.yaml)
)،
يمكن أن يكونا متوافقَين مع وحدة الماكرو @Observable
(الإصدار 17 من نظام التشغيل iOS والإصدارات الأحدث) أو ينفِّذان بروتوكول
ObservableObject
. الإعداد التلقائي، في حال عدم تحديد أي إعداد، هو macro
@Observable
المتوافق مع الإصدار 17 من نظام التشغيل iOS والإصدارات الأحدث.
في عرض SwiftUI، يمكنك ربط نتائج طلب البحث باستخدام المتغيّر data
المنشور لمرجع طلب البحث واستدعاء طريقة execute()
لطلب البحث لتعديل
البيانات. سيتطابق المتغيّر data
مع شكل البيانات التي تم تحديدها
في تعريف طلب البحث بتنسيق GQL.
تتوافق جميع النتائج التي يتم استرجاعها مع بروتوكول Decodable
. إذا أدرجت
المفتاح الأساسي للعنصر في طلب جلب GQL، تكون العناصر أيضًا Identifiable
،
مما يتيح لك استخدامها في الدوالّ المتكرّرة.
struct ListMovieView: View {
@StateObject private var queryRef = connector.listMoviesByGenreQuery.ref(genre: "Sci-Fi")
var body: some View {
VStack {
Button {
Task {
do {
try await refresh()
} catch {
print("Failed to refresh: \(error)")
}
}
} label: {
Text("Refresh")
}
// use the query results in a view
ForEach(queryRef.data?.movies ?? [], id: \.self.id) { movie in
Text(movie.title)
}
}
}
@MainActor
func refresh() async throws {
_ = try await queryRef.execute()
}
}
تتيح طلبات البحث أيضًا التنفيذ لمرة واحدة.
let resultData = try await DataConnect.moviesConnector.listMoviesByGenreQuery.execute(genre: "Sci-Fi")
إنشاء نموذج أولي لتطبيق iOS واختباره
إعداد التطبيقات لاستخدام محاكي محلي
يمكنك استخدام محاكي Data Connect، سواء من إضافة Data Connect في VS Code أو من سطر الأوامر.
لا يختلف إعداد التطبيق للاتصال بالمحاكي في كلا السيناريوهَين.
let connector = DataConnect.moviesConnector
// Connect to the emulator on "127.0.0.1:9399"
connector.useEmulator()
// (alternatively) if you're running your emulator on non-default port:
connector.useEmulator(port: 9999)
// Make calls from your app
أنواع البيانات في حِزم SDK من Data Connect
يمثّل خادم Data Connect أنواع بيانات GraphQL الشائعة والمخصّصة. يتم تمثيل هذه العناصر في حزمة SDK على النحو التالي.
نوع ربط البيانات | Swift |
---|---|
سلسلة | سلسلة |
Int | Int |
عائم | مزدوج |
منطقي | منطقية |
معرِّف فريد عالمي (UUID) | معرِّف فريد عالمي (UUID) |
التاريخ | FirebaseDataConnect.LocalDate |
الطابع الزمني | FirebaseCore.Timestamp |
Int64 | Int64 |
أي | FirebaseDataConnect.AnyValue |