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

SDK phía máy khách Firebase Data Connect cho phép bạn gọi các truy vấn và đột biến phía máy chủ ngay từ một ứng dụng Firebase. Bạn tạo một SDK phía máy khách tuỳ chỉnh song song khi thiết kế các lược đồ, truy vấn và đột biến 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 của ứng dụng.

Như chúng tôi đã đề cập ở nơi khác, điều quan trọng cần lưu ý là các truy vấn và đột biến không được mã ứng dụng gửi và thực thi trên máy chủ.Data Connect 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 triển khai các thay đổi tương ứng phía máy khách để tránh làm gián đoạn người dùng hiện tại (ví dụ: trên các phiên bản ứng dụng cũ).

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

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

Quy trình phát triển ứng dụng là gì?

Nếu đã làm theo hướng dẫn Bắt đầu, bạn sẽ được giới thiệu quy trình phát triển tổng thể cho Data Connect. Trong hướng dẫn này, bạn sẽ tìm thấy thông tin chi tiết hơn về cách tạo SDK Android từ lược đồ của mình và cách xử lý các truy vấn và đột biến của ứng dụng khách.

Tóm lại, để sử dụng các SDK Android đã tạo trong ứng dụng khách, bạn sẽ làm theo các bước tiên quyết sau:

  1. Thêm Firebase vào ứng dụng Android của bạn.
  2. Định cấu hình Data Connect làm phần phụ thuộc trong Gradle.
  3. Thêm trình bổ trợ Kotlin Serialization Gradle và phần phụ thuộc Gradle.

Sau đó:

  1. Phát triển giản đồ ứng dụng.
  2. Thiết lập quy trình tạo SDK:

    • Với nút Thêm SDK vào ứng dụng trong tiện ích Data Connect VS Code của chúng tôi
    • Bằng cách cập nhật connector.yaml
  3. Khởi chạy mã ứng dụng và nhập thư viện.

  4. Triển khai các lệnh gọi đến truy vấn và đột biến.

  5. Thiết lập và sử dụng trình mô phỏng Data Connect rồi lặp lại.

Tạo SDK Kotlin

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

Các lựa chọn tạo SDK được khoá cho 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 mà mã được tạo sẽ được đặt và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 câu lệnh gói Kotlin sẽ được dùng trong các tệp đã tạo hoặc bỏ qua package để dùng một gói mặc định.

Cập nhật SDK trong quá trình tạo mẫu

Nếu bạn đang tạo mẫu một cách tương tác bằng tiện ích Data Connect VS Code và trình mô phỏng Data Connect của tiện ích này, 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 lược đồ, truy vấn và đột biến. Đây có thể là một tính năng hữu ích trong quy trình làm việc 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 một đồng hồ theo dõi các bản cập nhật .gql và cũng có thể 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 bất cứ khi nào 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ị các nguồn dự án để gửi cho các 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 khách

Kết hợp Data Connect vào mã ứng dụng khách

Để thiết lập mã ứng dụng khách nhằm 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 đó, hãy thêm nội dung 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 đó, hãy thêm nội dung sau vào phần dependencies trong app/build.gradle.kts:

implementation(platform("com.google.firebase:firebase-bom:33.16.0"))
implementation("com.google.firebase:firebase-dataconnect")
implementation("com.google.firebase:firebase-auth") // Optional
implementation("com.google.firebase:firebase-appcheck") // Optional
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") // Newer versions should work too
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.5.1") // Newer versions should work too

Khởi chạy SDK Android Data Connect

Khởi chạy phiên bản Data Connect bằng thông tin bạn đã dùng để thiết lập Data Connect (tất cả đều có trong thẻ Data Connect của bảng điều khiển Firebase).

Đố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.yaml, cũng như connectorId trong connector.yaml.

Lấy một thực thể trình kết nối

Giờ đây, bạn đã thiết lập một đối tượng cấu hình, hãy lấy một thực thể trình kết nối Data Connect. Mã cho trình kết nối của bạn sẽ được trình mô phỏng Data Connect tạo. Nếu tên trình kết nối của bạn 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

Sử dụng các truy vấn và đột biến từ Android SDK

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 được xác định:

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

sau đó, 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 một Flow sẽ chỉ tạo ra kết quả khi một kết quả truy vấn mới được truy xuất 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

Thiết lập các ứng dụng để 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 là như 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 phát hành công khai, hãy nhận xét các dòng để kết nối với trình mô phỏng.

Các 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 Data Connect Kotlin
Chuỗi Chuỗi
Int Int (số nguyên 32 bit)
Nổi Double (số thực 64 bit)
Boolean Boolean
mã nhận dạng duy nhất (UUID) java.util.UUID
Ngày com.google.firebase.dataconnect.LocalDate (là java.util.Date cho đến phiên bản 16.0.0-beta03)
Dấu thời gian com.google.firebase.Timestamp
Int64 Dài
Bất kỳ com.google.firebase.dataconnect.AnyValue