ערכות ה-SDK ללקוח של Firebase Data Connect מאפשרות לכם לקרוא ישירות שאילתות ושינויים בצד השרת מאפליקציית Firebase. אתם יוצרים SDK מותאם אישית ללקוח במקביל לעיצוב הסכימות, השאילתות והשינויים שאתם פורסים בשירות Firebase Data Connect.Data Connect לאחר מכן, משלבים שיטות מ-SDK זה בלוגיקה של הלקוח.
כמו שציינו במקומות אחרים, חשוב לזכור שData Connect שאילתות ומוטציות לא נשלחות על ידי קוד לקוח ומופעלות בשרת.Data Connect במקום זאת, כשפורסים את הפונקציה, פעולות Data Connect מאוחסנות בשרת כמו ב-Cloud Functions. כלומר, צריך להטמיע שינויים תואמים בצד הלקוח כדי למנוע שיבוש של חוויית המשתמשים הקיימים (לדוגמה, בגרסאות ישנות יותר של האפליקציה).
לכן Data Connect מספק לכם סביבת פיתוח וכלים שמאפשרים לכם ליצור אב טיפוס של סכימות, שאילתות ומוטציות שמוצבות בשרת. בנוסף, המערכת יוצרת באופן אוטומטי ערכות SDK בצד הלקוח בזמן שאתם יוצרים אב טיפוס.
אחרי שחוזרים על תהליך העדכון של השירות ושל אפליקציות הלקוח, העדכונים בצד השרת ובצד הלקוח מוכנים לפריסה.
מהו תהליך העבודה לפיתוח לקוחות?
אם פעלתם לפי השלבים במאמר תחילת העבודה, קיבלתם הסבר על תהליך הפיתוח הכולל של Data Connect. במדריך הזה תמצאו מידע מפורט יותר על יצירת ערכות SDK ל-Android מהסכימה שלכם ועל עבודה עם שאילתות ומוטציות של לקוחות.
לסיכום, כדי להשתמש ב-Android SDK שנוצר באפליקציות הלקוח, צריך לבצע את השלבים המקדימים הבאים:
- מוסיפים את Firebase לאפליקציית Android.
- מגדירים את Data Connect כתלות ב-Gradle.
- מוסיפים את הפלאגין Kotlin Serialization Gradle ואת התלות Gradle.
לאחר מכן:
- פיתוח סכימת האפליקציה.
הגדרת יצירת SDK:
- באמצעות הלחצן Add SDK to app (הוספת SDK לאפליקציה) בתוסף Data Connect ל-VS Code
- עדכון של
connector.yaml
מגדירים את האמולטור Data Connect ומשתמשים בו וחוזרים על התהליך.
יצירת Kotlin SDK
בדומה לרוב פרויקטי Firebase, העבודה על קוד הלקוח Firebase Data Connect מתבצעת בספריית פרויקט מקומית. גם התוסף Data Connect ל-VS Code וגם FirebaseCLI הם כלים מקומיים חשובים ליצירה ולניהול של קוד לקוח.
אפשרויות היצירה של ערכת ה-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.
לחלופין, אפשר להשתמש ב-CLI כדי ליצור מחדש ערכות SDK בכל פעם שמשנים קובצי .gql:
firebase dataconnect:sdk:generate --watch
יצירת ערכות SDK לשילוב ולגרסאות ייצור
במקרים מסוימים, כמו הכנת מקורות פרויקט לשליחה לבדיקות CI, אפשר להפעיל את 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(platform("com.google.firebase:firebase-bom:33.16.0"))
implementation("com.google.firebase:firebase-dataconnect")
implementation("com.google.firebase:firebase-auth") // Optional
implementation("com.google.firebase:firebase-appcheck") // Optional
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") // Newer versions should work too
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.5.1") // Newer versions should work too
אתחול של Data Connect Android SDK
מאתחלים את מופע Data Connect באמצעות הפרטים שבהם השתמשתם כדי להגדיר את Data Connect (כל הפרטים זמינים בכרטיסייה 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
שימוש בשאילתות ובמוטציות מ-Android SDK
באמצעות אובייקט המחבר, אפשר להריץ שאילתות ומוטציות כמו שהוגדר בקוד המקור של 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 או דרך CLI.
התהליך של הוספת קוד לאפליקציה כדי להתחבר לאמולטור זהה בשני התרחישים.
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
כדי לעבור למשאבי ייצור, מוסיפים הערות לשורות שמתחברות לאמולטור.
סוגי נתונים בערכות Data Connect SDK
שרת Data Connect מייצג סוגי נתונים נפוצים ומותאמים אישית של GraphQL. הם מיוצגים ב-SDK באופן הבא.
סוג Data Connect | Kotlin |
---|---|
מחרוזת | מחרוזת |
Int | Int (מספר שלם ב-32 ביט) |
Float | Double (מספר ממשי (float) ב-64 ביט) |
בוליאני | בוליאני |
מזהה ייחודי אוניברסלי (UUID) | java.util.UUID |
תאריך | com.google.firebase.dataconnect.LocalDate (was java.util.Date until 16.0.0-beta03) |
חותמת זמן | com.google.firebase.Timestamp |
Int64 | ארוך |
הכול | com.google.firebase.dataconnect.AnyValue |