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. Data Connect hizmetinize dağıttığınız şemaları, sorguları ve mutasyonları tasarlarken paralel olarak özel bir istemci SDK'sı oluşturursunuz. Ardından, bu SDK'daki yöntemleri istemci mantığınıza entegre edersiniz.

Başka bir yerde de belirttiğimiz gibi, Data Connectsorgularının ve mutasyonlarının istemci kodu tarafından gönderilmediğini ve sunucuda yürütülmediğini belirtmek önemlidir. Bunun yerine, dağıtılan Data Connect işlemleri Cloud Functions gibi sunucuda depolanır. Bu nedenle, mevcut kullanıcıların (ör. eski uygulama sürümlerinde) uygulamayı kullanamamasını önlemek için istemci tarafında ilgili değişiklikleri dağıtmanız gerekir.

Bu nedenle Data Connect, sunucu üzerinde dağıtılan şemalarınızı, sorgularınızı ve mutasyonlarınızı prototip haline getirmenizi sağlayan bir geliştirici ortamı ve araçları sunar. Ayrıca, siz prototip oluştururken istemci tarafı SDK'ları otomatik olarak oluşturur.

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

Kotlin SDK'nızı oluşturma

Çoğu Firebase projesinde olduğu gibi, Firebase Data Connect istemci kodunuz üzerinde yerel bir proje dizininde çalışırsınız. Hem Data Connect VS Code uzantısı hem de Firebase CLI, istemci kodu oluşturmak ve yönetmek için önemli yerel araçlardır.

SDK oluşturma seçenekleri, projenizi başlattığınızda oluşturulan dataconnect.yamldosyasındaki çeşitli girişlere göre ayarlanır.

SDK oluşturma işlemini başlatma

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

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

Prototip oluşturma aşamasında SDK'ları güncelleme

Data Connect VS Code uzantısı ve Data Connect emülatörüyle etkileşimli olarak 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, Firebase İYS'sinden Data Connect 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ı değiştiğ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

Proje kaynaklarını CI testlerine gönderilecek şekilde hazırlama gibi bazı senaryolarda toplu güncelleme için Firebase CLI'yi çağırabilirsiniz.

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

Müşteri kodunu ayarlama

Data Connect öğesini istemci kodunuza dahil edin

Müşteri kodunuzu Data Connect ve oluşturulan SDK'nızı kullanacak şekilde ayarlamak için önce standart Firebase kurulum 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, app/build.gradle.kts bölümündeki dependencies bölümüne aşağıdakileri ekleyin:

implementation("com.google.firebase:firebase-dataconnect:16.0.0-beta03")
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'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 bilgiler Firebase konsolunun Veri Bağlantısı sekmesinde bulunur).

ConnectorConfig nesnesi

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

Bu nesne, dataconnect.yaml'deki serviceId ve location ile connector.yaml'deki connectorId'ten otomatik olarak oluşturulur.

Bağlayıcı örneği alma

Bir yapılandırma nesnesi oluşturduğunuza göre, Data Connect bir 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ı adınız movies ve Kotlin paketi com.myapplication ise (connector.yaml'de belirtildiği gibi) aşağıdakileri çağırarak bağlayıcı nesnesini alın:

val connector = com.myapplication.MoviesConnector.instance

Sorguları ve mutasyonları çalıştırma

Bağlantılayıcı nesnesi ile GraphQL kaynak kodunda tanımlandığı şekilde sorgular ve mutasyonlar ç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 film 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, yalnızca sorgunun execute() yöntemi çağrılarak yeni bir sorgu sonucu alındığında sonuç verecek bir Flow 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 ayarlama

Data Connect emülatörünü Data Connect VS Code uzantısından veya CLI'den kullanabilirsiniz.

Uygulamayı, emülatöre bağlanacak şekilde ayarlama işlemi her iki senaryo için de 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ı yorumlayı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 temsil edilir.

Veri Bağlantısı 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