Menggunakan Android SDK yang dihasilkan

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

Seperti yang telah kami sebutkan di bagian lain, penting untuk diperhatikan bahwa Data Connect kueri dan mutasi tidak dikirim oleh kode klien dan dieksekusi pada server tertentu. Sebagai gantinya, ketika di-deploy, operasi Data Connect disimpan di server seperti Cloud Functions. Ini berarti Anda perlu men-deploy aplikasi perubahan sisi klien untuk menghindari merusak pengguna yang ada (misalnya, pada aplikasi yang lebih lama ).

Itulah sebabnya Data Connect menyediakan lingkungan developer dan yang memungkinkan Anda membuat prototipe skema, kueri, dan mutasi yang di-deploy oleh 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. Baik Ekstensi Data Connect VS Code dan CLI Firebase merupakan 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 kueri yang dibuat kode akan ditempatkan; jalur ini relatif terhadap direktori yang berisi 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 VS Code Data Connect 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 Anda menggunakan emulator Data Connect dari CLI Firebase, Anda dapat menyetel smartwatch pada update .gql dan juga memiliki SDK sumber akan diperbarui 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 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

Sertakan Data Connect ke dalam kode klien Anda

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

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

Melakukan inisialisasi Data Connect Android SDK

Lakukan 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, jadikan baris komentar untuk terhubung ke resource produksi emulator.

Jenis data di Data Connect SDK

Server Data Connect mewakili jenis data GraphQL umum dan kustom. Hal ini diwakili 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.Stempel waktu
Int64 Long
Semua com.google.firebase.dataconnect.AnyValue