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 akan mengintegrasikan metode dari SDK ini ke dalam logika klien.

Seperti yang telah kami sebutkan di tempat lain, penting untuk diperhatikan bahwa kueri dan mutasi Data Connect tidak dikirimkan oleh kode klien dan dijalankan di server. Sebagai gantinya, saat di-deploy, operasi Data Connect disimpan di server seperti Cloud Functions. Artinya, Anda perlu men-deploy perubahan sisi klien yang sesuai untuk menghindari kerusakan pada pengguna yang 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 SDK Kotlin

Seperti sebagian besar project Firebase, pekerjaan pada kode klien Firebase Data Connect Anda dilakukan di direktori project lokal. Ekstensi VS Code Data Connect dan CLI Firebase adalah alat lokal 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.

Memperbarui 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 (hot reload).

Dalam skenario lain, jika menggunakan emulator Data Connect dari CLI Firebase, Anda dapat menetapkan pemantauan pada update .gql dan juga mengupdate 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 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.1.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 yang ditentukan:

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

kemudian, Anda dapat membuat dan mengambil film sebagai 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

Menginstrumentasikan klien untuk menggunakan emulator lokal

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

Instrumentasi aplikasi untuk terhubung ke emulator sama untuk 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