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
Diconnector.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).
.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 dapat 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-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
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 (bilangan bulat 32-bit) |
Float | Ganda (float 64-bit) |
Boolean | Boolean |
UUID | java.util.UUID |
Tanggal | com.google.firebase.dataconnect.LocalDate (sebelumnya java.util.Date hingga 16.0.0-beta03) |
Stempel waktu | com.google.firebase.Timestamp |
Int64 | Long |
Semua | com.google.firebase.dataconnect.AnyValue |