Menggunakan Android SDK yang dihasilkan

Dengan SDK klien Firebase Data Connect, Anda dapat memanggil kueri dan mutasi sisi server secara langsung dari aplikasi Firebase. Anda membuat SDK klien kustom secara paralel saat mendesain skema, kueri, dan mutasi yang di-deploy ke layanan Data Connect. Kemudian, Anda mengintegrasikan metode dari SDK ini ke dalam logika klien.

Seperti yang telah disebutkan di bagian lain, penting untuk diperhatikan bahwa kueri dan mutasi Data Connect tidak dikirimkan oleh kode klien dan dieksekusi di server. Sebagai gantinya, saat di-deploy, operasi Data Connect disimpan di server seperti Cloud Functions. Ini berarti Anda harus men-deploy perubahan sisi klien yang sesuai agar tidak mengganggu pengguna yang sudah ada (misalnya, pada versi aplikasi lama).

Itulah sebabnya Data Connect menyediakan lingkungan developer dan alat yang memungkinkan Anda membuat prototipe skema, kueri, dan mutasi yang di-deploy server. Alat ini juga membuat SDK sisi klien secara otomatis, saat Anda membuat prototipe.

Setelah Anda melakukan iterasi update pada aplikasi layanan dan klien, update sisi server dan sisi klien siap di-deploy.

Membuat Kotlin SDK

Seperti sebagian besar project Firebase, pekerjaan pada kode klien Firebase Data Connect Anda dilakukan di direktori project lokal. Ekstensi Data Connect VS Code dan CLI Firebase adalah alat lokal yang penting untuk membuat dan mengelola kode klien.

Opsi pembuatan SDK diberi kunci ke beberapa entri dalam file dataconnect.yaml yang dihasilkan saat Anda melakukan inisialisasi project.

Melakukan inisialisasi pembuatan SDK

Di connector.yaml, tambahkan outputDir, package, dan (untuk web SDK) packageJsonDir.
connectorId: movies
generate:
  kotlinSdk:
    outputDir: ../../../src/main/java/com/myapplication
    package: com.myapplication

Ganti outputDir dengan jalur direktori tempat kode yang dihasilkan akan ditempatkan; jalur ini bersifat relatif terhadap direktori yang berisi file connector.yaml itu sendiri. Ganti package dengan pernyataan paket Kotlin yang akan digunakan dalam file yang dihasilkan, atau hapus package untuk menggunakan paket default.

Mengupdate SDK saat membuat prototipe

Jika Anda membuat prototipe secara interaktif dengan ekstensi Data Connect VS Code dan emulator Data Connect-nya, file sumber SDK akan otomatis dibuat dan diperbarui saat Anda mengubah file .gql yang menentukan skema, kueri, dan mutasi. Hal ini dapat menjadi fitur yang berguna dalam alur kerja pemuatan ulang yang panas.

Dalam skenario lain, jika menggunakan emulator Data Connect dari Firebase CLI, Anda dapat menyetel smartwatch pada update .gql dan juga memperbarui sumber SDK secara otomatis.

Atau, Anda dapat menggunakan CLI untuk membuat ulang SDK setiap kali file .gql diubah:

firebase dataconnect:sdk:generate --watch

Membuat SDK untuk integrasi dan untuk rilis produksi

Dalam beberapa skenario, seperti menyiapkan sumber project untuk dikirimkan ke pengujian CI, Anda dapat memanggil Firebase CLI untuk update batch.

Dalam kasus ini, gunakan firebase dataconnect:sdk:generate.

Menyiapkan kode klien

Menyertakan Data Connect ke dalam kode klien Anda

Untuk menyiapkan kode klien agar menggunakan Data Connect dan SDK yang dihasilkan, ikuti petunjuk penyiapan Firebase standar terlebih dahulu.

Kemudian, tambahkan kode berikut ke bagian plugins di 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

Kemudian, tambahkan kode berikut ke bagian dependencies di app/build.gradle.kts:

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

Melakukan inisialisasi Data Connect Android SDK

Inisialisasi instance Data Connect menggunakan informasi yang Anda gunakan untuk menyiapkan Data Connect (semua tersedia di tab Data Connect konsol Firebase).

Objek ConnectorConfig

SDK memerlukan objek konfigurasi konektor.

Objek ini dibuat secara otomatis dari serviceId dan location di dataconnect.yaml, dan connectorId di connector.yaml.

Mendapatkan instance konektor

Setelah menyiapkan objek konfigurasi, dapatkan instance konektor Data Connect. Kode untuk konektor Anda akan dibuat oleh emulator Data Connect. Jika nama konektor Anda adalah movies dan paket Kotlin adalah com.myapplication, seperti yang ditentukan dalam connector.yaml, maka ambil objek konektor dengan memanggil:

val connector = com.myapplication.MoviesConnector.instance

Menjalankan kueri dan mutasi

Dengan objek konektor, Anda dapat menjalankan kueri dan mutasi seperti yang ditentukan dalam kode sumber GraphQL. Misalkan konektor Anda memiliki operasi berikut:

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

maka Anda dapat membuat dan mengambil film seperti berikut:

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

Anda juga dapat mengambil beberapa film:

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)

Anda juga dapat mengumpulkan Flow yang hanya akan menghasilkan hasil saat hasil kueri baru diambil menggunakan panggilan ke metode execute() kueri.

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

Membuat prototipe dan menguji aplikasi Android Anda

Menginstrumentasikan klien untuk menggunakan emulator lokal

Anda dapat menggunakan emulator Data Connect, baik dari ekstensi VS Code Data Connect maupun dari CLI.

Menginstrumentasikan aplikasi untuk terhubung ke emulator sama dengan kedua skenario.

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

Untuk beralih ke resource produksi, komentari baris untuk terhubung ke emulator.

Jenis data di Data Connect SDK

Server Data Connect mewakili jenis data GraphQL umum dan kustom. Hal ini direpresentasikan dalam SDK sebagai berikut.

Jenis Data Connect Kotlin
String String
Int Int (32-bit)
Float Ganda (float 64-bit)
Boolean Boolean
UUID java.util.UUID
Tanggal java.util.Date
Stempel waktu com.google.firebase.Timestamp
Int64 Long
Semua com.google.firebase.dataconnect.AnyValue