SDK های مشتری Firebase Data Connect به شما امکان می دهند پرس و جوها و جهش های سمت سرور خود را مستقیماً از یک برنامه Firebase فراخوانی کنید. همزمان با طراحی طرحواره ها، پرس و جوها و جهش هایی که در سرویس Data Connect خود مستقر می کنید، یک SDK مشتری سفارشی ایجاد می کنید. سپس، شما متدها را از این SDK در منطق کلاینت خود ادغام می کنید.
همانطور که در جاهای دیگر ذکر کردیم، توجه به این نکته مهم است که کوئریها و جهشهای Data Connect توسط کد مشتری ارسال نمیشوند و روی سرور اجرا نمیشوند. در عوض، هنگام استقرار، عملیات Data Connect مانند توابع ابری در سرور ذخیره می شود. این بدان معناست که شما باید تغییرات سمت کلاینت مربوطه را برای جلوگیری از شکستن کاربران موجود (مثلاً در نسخههای قدیمیتر برنامه) اعمال کنید.
به همین دلیل است که Data Connect یک محیط توسعهدهنده و ابزاری را در اختیار شما قرار میدهد که به شما امکان میدهد طرحوارهها، پرسشها و جهشهای مستقر در سرور خود را نمونهسازی کنید. همچنین در حالی که شما نمونه سازی می کنید، SDK های سمت سرویس گیرنده را به طور خودکار تولید می کند.
هنگامی که بهروزرسانیهای سرویس و برنامههای سرویس گیرنده خود را تکرار کردید، بهروزرسانیهای سمت سرور و سرویس گیرنده آماده اجرا هستند.
گردش کار توسعه مشتری چیست؟
اگر شروع به کار را دنبال کنید، با جریان کلی توسعه برای Data Connect آشنا شده اید. در این راهنما، اطلاعات دقیق تری در مورد ایجاد Swift SDK از طرح و کار با جستارها و جهش های مشتری پیدا خواهید کرد.
به طور خلاصه، برای استفاده از Swift SDK های تولید شده در برنامه های مشتری خود، این مراحل پیش نیاز را دنبال خواهید کرد:
- Firebase را به برنامه iOS خود اضافه کنید.
برای استفاده از SDK تولید شده، آن را به عنوان یک وابستگی در Xcode پیکربندی کنید.
در نوار پیمایش بالای Xcode، File > Add Package Dependencies > Add Local را انتخاب کنید و پوشه حاوی
Package.swift
تولید شده را انتخاب کنید.
سپس:
- طرح برنامه خود را توسعه دهید.
تنظیم تولید SDK:
- با دکمه افزودن SDK به برنامه در افزونه Data Connect VS Code
- با به روز رسانی
connector.yaml
خود
کد مشتری خود را راه اندازی کنید و کتابخانه ها را وارد کنید .
شبیه ساز Data Connect تنظیم و استفاده کنید و تکرار کنید.
Swift SDK خود را ایجاد کنید
از Firebase CLI برای تنظیم SDK های ایجاد شده Data Connect در برنامه های خود استفاده کنید. دستور init
باید تمام برنامه های موجود در پوشه فعلی را شناسایی کرده و SDK های تولید شده را به طور خودکار نصب کند.
firebase init dataconnect:sdk
SDK ها را هنگام نمونه سازی به روز کنید
اگر افزونه Data Connect VS Code را نصب کرده باشید، SDK های تولید شده را همیشه به روز نگه می دارد.
اگر از افزونه Data Connect VS Code استفاده نمی کنید، می توانید از Firebase CLI برای به روز نگه داشتن SDK های تولید شده استفاده کنید.
firebase dataconnect:sdk:generate --watch
ایجاد SDK در خطوط لوله ساخت
میتوانید از Firebase CLI برای تولید Data Connect SDK در فرآیندهای ساخت CI/CD استفاده کنید.
firebase dataconnect:sdk:generate
Data Connect iOS SDK را راه اندازی کنید
نمونه Data Connect خود را با استفاده از اطلاعاتی که برای راه اندازی Data Connect استفاده کردید (همه در تب Data Connect کنسول Firebase موجود است) راه اندازی کنید.
دریافت نمونه اتصال
کد کانکتور شما توسط شبیه ساز 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
(iOS 17+) پشتیبانی می کنند یا پروتکل ObservableObject
پیاده سازی می کنند. پیشفرض، اگر هیچ کدام مشخص نشده باشد، ماکرو @Observable
است که در iOS 17+ پشتیبانی میشود.
در نمای SwiftUI، می توانید نتایج پرس و جو را با استفاده از متغیر data
منتشر شده query ref متصل کنید و متد execute()
query را برای به روز رسانی داده ها فراخوانی کنید. متغیر 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")
تغییرات فیلدهای شمارش را مدیریت کنید
طرحواره یک برنامه میتواند شامل شمارشهایی باشد که میتوان با جستارهای GraphQL به آنها دسترسی داشت.
همانطور که طراحی برنامه تغییر می کند، می توانید مقادیر جدید پشتیبانی شده enum اضافه کنید. به عنوان مثال، تصور کنید که بعداً در چرخه عمر برنامه خود تصمیم می گیرید یک مقدار FULLSCREEN به enum AspectRatio
اضافه کنید.
در گردش کار Data Connect ، میتوانید از ابزار توسعه محلی برای بهروزرسانی پرسشها و SDKهای خود استفاده کنید.
با این حال، قبل از اینکه یک نسخه بهروز از کلاینتهای خود را منتشر کنید، ممکن است کلاینتهای مستقر قدیمیتر خراب شوند.
مثال اجرای ارتجاعی
SDK تولید شده، مقادیر ناشناخته را مدیریت می کند، زیرا enum های تولید شده حاوی یک مقدار _UNKNOWN
هستند، و Swift دستورات سوئیچ جامع را اعمال می کند.
do {
let result = try await DataConnect.moviesConnector.listMovies.execute()
if let data = result.data {
for movie in data.movies {
switch movie.aspectratio {
case .ACADEMY: print("academy")
case .WIDESCREEN: print("widescreen")
case .ANAMORPHIC: print("anamorphic")
case ._UNKNOWN(let unknownAspect): print(unknownAspect)
}
}
}
} catch {
// handle error
}
برنامه iOS خود را نمونه اولیه و آزمایش کنید
کلاینت های ابزار برای استفاده از شبیه ساز محلی
می توانید از شبیه ساز Data Connect استفاده کنید، چه از پسوند Data Connect VS Code یا از CLI.
ابزار دقیق برنامه برای اتصال به شبیه ساز برای هر دو سناریو یکسان است.
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
انواع داده در Data Connect SDKs
سرور Data Connect نشان دهنده انواع داده های رایج و سفارشی GraphQL است. این موارد در SDK به شرح زیر نشان داده شده است.
نوع اتصال داده | سویفت |
---|---|
رشته | رشته |
بین المللی | بین المللی |
شناور | دوبل |
بولی | بول |
UUID | UUID |
تاریخ | FirebaseDataConnect.LocalDate |
مهر زمان | FirebaseCore.Timestamp |
Int64 | Int64 |
هر | FirebaseDataConnect.AnyValue |