Sử dụng SDK Android đã tạo

SDK ứng dụng Firebase Data Connect cho phép bạn gọi các truy vấn và thay đổi phía máy chủ trực tiếp từ ứng dụng Firebase. Bạn tạo một SDK ứng dụng tuỳ chỉnh song song khi thiết kế giản đồ, truy vấn và thay đổi mà bạn triển khai cho dịch vụ Data Connect. Sau đó, bạn tích hợp các phương thức từ SDK này vào logic ứng dụng.

Như chúng tôi đã đề cập ở trên, cần lưu ý rằng Data Connect các truy vấn và đột biến không được gửi bởi mã ứng dụng và được thực thi trên máy chủ. Thay vào đó, khi được triển khai, các thao tác Data Connect sẽ được lưu trữ trên máy chủ như Cloud Functions. Điều này có nghĩa là bạn cần phải triển khai các thay đổi phía máy khách để tránh làm hỏng người dùng hiện tại (ví dụ: trên ứng dụng cũ hơn phiên bản).

Đó là lý do Data Connect cung cấp cho bạn môi trường dành cho nhà phát triển và để tạo nguyên mẫu cho giản đồ, truy vấn và các biến đổi do máy chủ triển khai. Công cụ này cũng tự động tạo SDK phía máy khách trong khi bạn tạo nguyên mẫu.

Khi bạn đã lặp lại việc cập nhật cho dịch vụ và ứng dụng khách của mình, cả ứng dụng máy chủ và ứng dụng bản cập nhật phía máy khách đã sẵn sàng triển khai.

Tạo SDK Kotlin

Giống như hầu hết các dự án Firebase, công việc trên mã ứng dụng Firebase Data Connect diễn ra trong thư mục dự án cục bộ. Cả tiện ích Data Connect VS Code và CLI Firebase đều là các công cụ cục bộ quan trọng để tạo và quản lý mã ứng dụng.

Các tuỳ chọn tạo SDK được liên kết với một số mục trong tệp dataconnect.yaml được tạo khi bạn khởi chạy dự án.

Khởi chạy quá trình tạo SDK

Trong connector.yaml, hãy thêm outputDir, package và (đối với SDK web) packageJsonDir.
connectorId: movies
generate:
  kotlinSdk:
    outputDir: ../../../src/main/java/com/myapplication
    package: com.myapplication

Thay thế outputDir bằng đường dẫn của thư mục chứa mã được tạo; đường dẫn này tương ứng với thư mục chứa chính tệp connector.yaml. Thay thế package bằng gói Kotlin để sử dụng trong các tệp đã tạo hoặc bỏ qua package để sử dụng giá trị mặc định .

Cập nhật SDK trong khi tạo bản nguyên mẫu

Nếu bạn đang tạo bản minh hoạ tương tác bằng tiện ích Data Connect VS Code và trình mô phỏng Data Connect, thì các tệp nguồn SDK sẽ tự động được tạo và cập nhật trong khi bạn sửa đổi các tệp .gql xác định giản đồ, truy vấn và đột biến. Đây có thể là một tính năng hữu ích trong quy trình tải (lại) nóng.

Trong các trường hợp khác, nếu đang sử dụng trình mô phỏng Data Connect từ CLI Firebase, bạn có thể đặt chế độ theo dõi các bản cập nhật .gql và cũng tự động cập nhật các nguồn SDK.

Ngoài ra, bạn có thể dùng CLI để tạo lại SDK mỗi khi tệp .gql thay đổi:

firebase dataconnect:sdk:generate --watch

Tạo SDK để tích hợp và phát hành chính thức

Trong một số trường hợp, chẳng hạn như chuẩn bị nguồn dự án để gửi cho các bài kiểm thử CI, bạn có thể gọi CLI Firebase để cập nhật hàng loạt.

Trong những trường hợp này, hãy sử dụng firebase dataconnect:sdk:generate.

Thiết lập mã ứng dụng

Tích hợp Data Connect vào mã ứng dụng

Để thiết lập mã ứng dụng để sử dụng Data Connect và SDK đã tạo, trước tiên, hãy làm theo hướng dẫn thiết lập Firebase tiêu chuẩn.

Sau đó, thêm đoạn mã sau vào phần plugins trong 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

Sau đó, thêm đoạn mã sau vào phần dependencies trong 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

Khởi chạy SDK Android Data Connect

Khởi động thực thể Data Connect bằng thông tin mà bạn dùng để thiết lập Kết nối dữ liệu (tất cả đều có trong bảng điều khiển Firebase thẻ Kết nối dữ liệu).

Đối tượng ConnectorConfig

SDK yêu cầu một đối tượng cấu hình trình kết nối.

Đối tượng này được tạo tự động từ serviceIdlocation trong dataconnect.yamlconnectorId trong connector.yaml.

Tải bản sao trình kết nối

Bây giờ, bạn đã thiết lập đối tượng cấu hình, hãy nhận Data Connect bản sao trình kết nối. Trình mô phỏng Data Connect sẽ tạo mã cho trình kết nối. Nếu tên trình kết nối là movies và gói Kotlin là com.myapplication, như được chỉ định trong connector.yaml, thì hãy truy xuất đối tượng trình kết nối bằng cách gọi:

val connector = com.myapplication.MoviesConnector.instance

Chạy truy vấn và các phép biến đổi

Với đối tượng trình kết nối, bạn có thể chạy các truy vấn và đột biến như được xác định trong mã nguồn GraphQL. Giả sử trình kết nối của bạn có các thao tác sau:

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

thì bạn có thể tạo và truy xuất một bộ phim như sau:

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

Bạn cũng có thể truy xuất nhiều phim:

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)

Bạn cũng có thể thu thập Flow chỉ tạo ra kết quả khi truy xuất kết quả truy vấn mới bằng cách gọi phương thức execute() của truy vấn.

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

Tạo nguyên mẫu và kiểm thử ứng dụng Android

Máy khách công cụ để sử dụng trình mô phỏng cục bộ

Bạn có thể sử dụng trình mô phỏng Data Connect, cho dù là từ tiện ích Data Connect VS Code hay từ CLI.

Việc đo lường ứng dụng để kết nối với trình mô phỏng cũng giống nhau đối với cả hai trường hợp.

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

Để chuyển sang tài nguyên sản xuất, hãy nhận xét các dòng để kết nối với trình mô phỏng.

Loại dữ liệu trong SDK Data Connect

Máy chủ Data Connect đại diện cho các loại dữ liệu GraphQL phổ biến và tuỳ chỉnh. Các giá trị này được biểu thị trong SDK như sau.

Loại kết nối dữ liệu Kotlin
Chuỗi Chuỗi
Int Int (32 bit)
Số thực Double (số thực 64 bit)
Boolean Boolean
mã nhận dạng duy nhất (UUID) java.util.UUID
Ngày java.util.Date
Dấu thời gian com.google.firebase.Timestamp
Int64 Dài
Bất kỳ com.google.firebase.dataconnect.AnyValue