Oluşturulan Android SDK'larını kullanma

Firebase Data Connect istemci SDK'ları, sunucu tarafı sorgularınızı ve mutasyonlarınızı doğrudan bir Firebase uygulamasından çağırmanıza olanak tanır. Şemaları, sorguları ve mutasyonları tasarlarken özel bir istemci SDK'sı oluşturursunuz. Bu SDK'yı Data Connect hizmetinize dağıtırsınız. Ardından, bu SDK'daki yöntemleri istemci mantığınıza entegre edersiniz.

Başka bir yerde de belirttiğimiz gibi, Data Connect sorguların ve mutasyonların istemci kodu tarafından gönderilmediğini ve sunucuda yürütülmediğini unutmamak önemlidir. Bunun yerine, dağıtıldığında Data Connect işlemleri Cloud Functions gibi sunucuda depolanır. Bu nedenle, mevcut kullanıcıların (ör. uygulamanın eski sürümlerinde) deneyimini bozmamak için ilgili istemci tarafı değişikliklerini dağıtmanız gerekir.

Bu nedenle Data Connect, sunucuya dağıtılan şemalarınızı, sorgularınızı ve mutasyonlarınızı prototip oluşturmanıza olanak tanıyan bir geliştirme ortamı ve araçlar sunar. Ayrıca, prototip oluştururken istemci tarafı SDK'larını otomatik olarak oluşturur.

Hizmetinizde ve istemci uygulamalarınızda güncellemeleri yineledikten sonra hem sunucu hem de istemci tarafı güncellemeleri dağıtılmaya hazır olur.

Müşteri geliştirme iş akışı nedir?

Başlangıç bölümünü incelediyseniz Data Connect için genel geliştirme akışıyla tanışmışsınızdır. Bu kılavuzda, şemanızdan Android SDK'ları oluşturma ve istemci sorguları ile mutasyonlarla çalışma hakkında daha ayrıntılı bilgi bulabilirsiniz.

Özetlemek gerekirse, oluşturulan Android SDK'larını istemci uygulamalarınızda kullanmak için aşağıdaki ön koşul adımlarını uygulamanız gerekir:

  1. Firebase'i Android uygulamanıza ekleyin.
  2. Gradle'da Data Connect bağımlılığını yapılandırın.
  3. Kotlin Serialization Gradle eklentisini ve Gradle bağımlılığını ekleyin.

Ardından:

  1. Uygulama şemanızı geliştirin.
  2. SDK oluşturmayı ayarlayın:

  3. İstemci kodunuzu başlatın ve kitaplıkları içe aktarın.

  4. Sorgulara ve mutasyonlara yönelik çağrıları uygulama

  5. Data Connect emülatörünü ayarlayıp kullanın ve yineleyin.

Kotlin SDK'nızı oluşturun

Çoğu Firebase projesinde olduğu gibi, Firebase Data Connect istemci kodunuzla ilgili çalışmalar yerel bir proje dizininde yapılır. Hem Data Connect VS Code uzantısı hem de Firebase CLI, istemci kodu oluşturma ve yönetme için önemli yerel araçlardır.

SDK oluşturma seçenekleri, projenizi ilk kullanıma hazırladığınızda oluşturulan dataconnect.yaml dosyasındaki çeşitli girişlere göre belirlenir.

SDK oluşturmayı başlatma

connector.yaml içinde outputDir, package ve (web SDK'sı için) packageJsonDir ekleyin.
connectorId: movies
generate:
  kotlinSdk:
    outputDir: ../../../src/main/java/com/myapplication
    package: com.myapplication

outputDir kısmını, oluşturulan kodun yerleştirileceği dizinin yoluyla değiştirin. Bu yol, connector.yaml dosyasını içeren dizine göre belirlenir. package kısmını, oluşturulan dosyalarda kullanılacak Kotlin paketi ifadesiyle değiştirin veya varsayılan bir paket kullanmak için package kısmını atlayın.

Prototip oluştururken SDK'ları güncelleme

Data Connect VS Code uzantısı ve Data Connect emülatörü ile etkileşimli prototip oluşturuyorsanız şemaları, sorguları ve mutasyonları tanımlayan .gql dosyalarını değiştirirken SDK kaynak dosyaları otomatik olarak oluşturulur ve güncellenir. Bu özellik, sıcak yeniden yükleme iş akışlarında yararlı olabilir.

Diğer senaryolarda, Data Connect CLI'dan Firebase emülatörünü kullanıyorsanız .gql güncellemelerini izleyebilir ve SDK kaynaklarının otomatik olarak güncellenmesini sağlayabilirsiniz.

Alternatif olarak, .gql dosyaları her değiştirildiğinde SDK'ları yeniden oluşturmak için KSA'yı kullanabilirsiniz:

firebase dataconnect:sdk:generate --watch

Entegrasyon ve üretim sürümleri için SDK'lar oluşturma

CI testlerine göndermek üzere proje kaynaklarını hazırlama gibi bazı senaryolarda, toplu güncelleme için Firebase CLI'yı çağırabilirsiniz.

Bu durumlarda firebase dataconnect:sdk:generate simgesini kullanın.

Müşteri kodunu ayarlama

Data Connect simgesini müşteri kodunuza ekleyin.

İstemci kodunuzu Data Connect ve oluşturduğunuz SDK'yı kullanacak şekilde ayarlamak için öncelikle standart Firebase kurulumu talimatlarını uygulayın.

Ardından, app/build.gradle.kts içindeki plugins bölümüne aşağıdakileri ekleyin:

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

Ardından, dependencies bölümüne aşağıdakileri ekleyin: 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'sını başlatma

Veri Bağlantısı'nı ayarlamak için kullandığınız bilgileri kullanarak Data Connect örneğinizi başlatın (tümü Firebase konsolunun Veri Bağlantısı sekmesinde bulunur).

ConnectorConfig nesnesi

SDK için bağlayıcı yapılandırma nesnesi gerekir.

Bu nesne, dataconnect.yaml içindeki serviceId ve location ile connector.yaml içindeki connectorId öğelerinden otomatik olarak oluşturulur.

Bağlayıcı örneği alma

Yapılandırma nesnesi oluşturduktan sonra Data Connect bağlayıcı örneği alın. Bağlayıcınızın kodu, Data Connect emülatörü tarafından oluşturulur. Bağlayıcınızın adı movies ve connector.yaml içinde belirtildiği gibi Kotlin paketi com.myapplication ise bağlayıcı nesnesini şu kodu çağırarak alın:

val connector = com.myapplication.MoviesConnector.instance

Android SDK'nızdaki sorguları ve mutasyonları kullanma

Bağlayıcı nesnesiyle, GraphQL kaynak kodunda tanımlandığı şekilde sorgu ve mutasyon çalıştırabilirsiniz. Bağlayıcınızda aşağıdaki işlemlerin tanımlandığını varsayalım:

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

Ardından, aşağıdaki gibi bir film oluşturup alabilirsiniz:

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}")

Birden fazla filmi de alabilirsiniz:

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)

Ayrıca, sorgunun execute() yöntemi çağrılarak yeni bir sorgu sonucu alındığında sonuç üretecek bir Flow de toplayabilirsiniz.

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 uygulamanızın prototipini oluşturma ve test etme

İstemcileri yerel bir emülatör kullanacak şekilde yapılandırma

Data Connect emülatörünü, Data Connect VS Code uzantısından veya KSA'dan kullanabilirsiniz.

Uygulamayı emülatöre bağlanacak şekilde ayarlama işlemi her iki senaryoda da aynıdır.

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

Üretim kaynaklarına geçmek için emülatöre bağlanma satırlarını yorum satırı yapın.

Data Connect SDK'larındaki veri türleri

Data Connect sunucusu, yaygın ve özel GraphQL veri türlerini temsil eder. Bunlar SDK'da aşağıdaki gibi gösterilir.

Data Connect Türü Kotlin
Dize Dize
Int Int (32 bit tam sayı)
Kayan Çift (64 bit kayan nokta)
Boole Boole
UUID java.util.UUID
Tarih com.google.firebase.dataconnect.LocalDate (16.0.0-beta03 sürümüne kadar java.util.Date idi)
Zaman damgası com.google.firebase.Timestamp
Int64 Uzun
Hepsi com.google.firebase.dataconnect.AnyValue