जनरेट किए गए Android SDK टूल इस्तेमाल करना

Firebase Data Connect क्लाइंट SDK टूल की मदद से, सीधे Firebase ऐप्लिकेशन से अपनी सर्वर-साइड क्वेरी और बदलावों को कॉल किया जा सकता है. साथ ही, अपनी Data Connect सेवा में डिप्लॉय किए जाने वाले स्कीमा, क्वेरी, और बदलावों को डिज़ाइन करते समय, एक कस्टम क्लाइंट SDK टूल भी जनरेट किया जा सकता है. इसके बाद, इस SDK टूल के तरीकों को अपने क्लाइंट लॉजिक में इंटिग्रेट किया जाता है.

जैसा कि हमने कहीं और बताया है, यह ध्यान रखना ज़रूरी है कि Data Connect क्वेरी और म्यूटेशन, क्लाइंट कोड से सबमिट नहीं किए जाते और उन्हें सर्वर पर चलाया जाता है. इसके बजाय, डिप्लॉय होने पर, Data Connect ऑपरेशन को Cloud Functions जैसे सर्वर पर सेव किया जाता है. इसका मतलब है कि आपको मौजूदा उपयोगकर्ताओं को ऐप्लिकेशन के पुराने वर्शन पर काम करने से रोकने के लिए, क्लाइंट-साइड में बदलाव करने होंगे.

इसलिए, Data Connect आपको एक डेवलपर इनवायरनमेंट और टूल उपलब्ध कराता है. इसकी मदद से, सर्वर पर डिप्लॉय किए गए स्कीमा, क्वेरी, और म्यूटेशन का प्रोटोटाइप बनाया जा सकता है. प्रोटोटाइप बनाते समय, यह क्लाइंट-साइड SDK भी अपने-आप जनरेट करता है.

अपनी सेवा और क्लाइंट ऐप्लिकेशन में अपडेट करने के बाद, सर्वर- और क्लाइंट-साइड, दोनों अपडेट डिप्लॉय करने के लिए तैयार हो जाते हैं.

अपना Kotlin SDK टूल जनरेट करना

ज़्यादातर Firebase प्रोजेक्ट की तरह, आपके Firebase Data Connect क्लाइंट कोड पर काम, लोकल प्रोजेक्ट डायरेक्ट्री में किया जाता है. क्लाइंट कोड जनरेट करने और मैनेज करने के लिए, Data Connect VS Code एक्सटेंशन और Firebase CLI, दोनों ही स्थानीय टूल अहम हैं.

एसडीके जनरेशन के विकल्प, 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 फ़ाइल मौजूद होती है. जनरेट की गई फ़ाइलों में इस्तेमाल किए जाने वाले Kotlin पैकेज स्टेटमेंट से package को बदलें या डिफ़ॉल्ट पैकेज का इस्तेमाल करने के लिए package को हटाएं.

प्रोटोटाइप बनाते समय SDK टूल अपडेट करना

अगर Data Connect VS Code एक्सटेंशन और उसके Data Connect एमुलेटर की मदद से इंटरैक्टिव तरीके से प्रोटोटाइप बनाया जा रहा है, तो स्कीमा, क्वेरी, और म्यूटेशन तय करने वाली .gql फ़ाइलों में बदलाव करने पर, SDK टूल की सोर्स फ़ाइलें अपने-आप जनरेट और अपडेट हो जाती हैं. यह हॉट (फिर से) लोड होने वाले वर्कफ़्लो में एक मददगार सुविधा हो सकती है.

अन्य मामलों में, अगर Firebase सीएलआई से Data Connect एमुलेटर का इस्तेमाल किया जा रहा है, तो .gql अपडेट पर वॉच सेट की जा सकती है. साथ ही, SDK टूल के सोर्स अपने-आप अपडेट हो सकते हैं.

इसके अलावा, .gql फ़ाइलों में बदलाव होने पर, SDK टूल फिर से जनरेट करने के लिए, CLI का इस्तेमाल किया जा सकता है:

firebase dataconnect:sdk:generate --watch

इंटिग्रेशन और प्रोडक्शन रिलीज़ के लिए SDK टूल जनरेट करना

कुछ मामलों में, जैसे कि सीआई टेस्ट के लिए सबमिट करने के लिए प्रोजेक्ट सोर्स तैयार करना, एक साथ कई अपडेट करने के लिए Firebase सीएलआई को कॉल किया जा सकता है.

ऐसे मामलों में, firebase dataconnect:sdk:generate का इस्तेमाल करें.

क्लाइंट कोड सेट अप करना

अपने क्लाइंट कोड में Data Connect शामिल करना

Data Connect और जनरेट किए गए SDK टूल का इस्तेमाल करने के लिए, अपने क्लाइंट कोड को सेट अप करने के लिए, पहले Firebase सेटअप करने के स्टैंडर्ड निर्देशों का पालन करें.

इसके बाद, app/build.gradle.kts में plugins सेक्शन में ये जोड़ें:

// 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

इसके बाद, app/build.gradle.kts में dependencies सेक्शन में ये जोड़ें:

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.1.0") // Optional
implementation("com.google.firebase:firebase-appcheck:18.0.0") // Optional

Data Connect Android SDK टूल को शुरू करना

Data Connect को सेट अप करने के लिए इस्तेमाल की गई जानकारी का इस्तेमाल करके, अपने Data Connect इंस्टेंस को शुरू करें. यह जानकारी, Firebase कंसोल के Data Connect टैब में उपलब्ध है.

ConnectorConfig ऑब्जेक्ट

SDK के लिए, कनेक्टर कॉन्फ़िगरेशन ऑब्जेक्ट की ज़रूरत होती है.

यह ऑब्जेक्ट, dataconnect.yaml में serviceId और location से और connector.yaml में connectorId से अपने-आप जनरेट होता है.

कनेक्टर इंस्टेंस पाना

कॉन्फ़िगरेशन ऑब्जेक्ट सेट अप करने के बाद, Data Connect कनेक्टर इंस्टेंस पाएं. आपके कनेक्टर का कोड, Data Connect एमुलेटर जनरेट करेगा. अगर आपके कनेक्टर का नाम movies है और connector.yaml में बताए गए मुताबिक, Kotlin पैकेज com.myapplication है, तो कनेक्टर ऑब्जेक्ट को वापस पाने के लिए, इन फ़ंक्शन को कॉल करें:

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

प्रोडक्शन संसाधनों पर स्विच करने के लिए, एमुलेटर से कनेक्ट करने के लिए बनी लाइनों पर टिप्पणी करें.

Data Connect SDK टूल में डेटा टाइप

Data Connect सर्वर, सामान्य और कस्टम GraphQL डेटा टाइप दिखाता है. इन्हें एसडीके टूल में इस तरह दिखाया जाता है.

Data Connect का टाइप Kotlin
स्ट्रिंग स्ट्रिंग
Int Int (32-बिट)
फ़्लोट डबल (64-बिट फ़्लोट)
बूलियन बूलियन
यूयूआईडी java.util.UUID
तारीख java.util.Date
टाइमस्टैंप com.google.firebase.Timestamp
Int64 ज़्यादा समय के लिए
कोई भी com.google.firebase.dataconnect.AnyValue