Bắt đầu sử dụng Firebase SQL Connect trên iOS

Trong hướng dẫn nhanh này, bạn sẽ tạo và triển khai một cơ sở dữ liệu mẫu nhỏ, đồng thời truy cập vào cơ sở dữ liệu đó từ một ứng dụng iOS.

Điều kiện tiên quyết

Để hoàn tất hướng dẫn nhanh này, bạn cần có những điều sau:

  • Một môi trường đã cài đặt các công cụ sau:
    • Phiên bản Xcode gần đây.
    • Giao diện dòng lệnh (CLI) của Firebase. Nếu bạn đã cài đặt NPM, hãy chạy:
      npm install -g firebase-tools@latest
      Nếu không, hãy xem tài liệu hướng dẫn cài đặt.
  • Tài khoản Google.

Hướng dẫn

Hướng dẫn

1. Tạo dự án Xcode mới

Trong Xcode, hãy tạo một dự án mới bằng mẫu App (Ứng dụng).

Đặt tên cho dự án là Quickstart với mã nhận dạng gói là com.example.Quickstart.

Hộp thoại dự án mới của Xcode

Tạo dự án trong một thư mục trống, chẳng hạn như ~/qs-ios. Xcode sẽ tạo một thư mục ~/qs-ios/Quickstart chứa các tệp dự án của bạn.

2. Khởi chạy dự án Firebase

Chuyển sang thư mục dự án của dự án Xcode và khởi chạy một dự án Firebase trong đó.

cd ~/qs-ios
firebase login --reauth
firebase init dataconnect

Khi được nhắc, hãy chọn các lựa chọn sau:

  • Tạo dự án Firebase mới.
  • Không tạo giản đồ bằng Gemini (trong hướng dẫn này, bạn sẽ sử dụng giản đồ mẫu được tạo sẵn ).
  • Cung cấp cơ sở dữ liệu và thực thể dùng thử miễn phí Cloud SQL.

Chấp nhận các giá trị mặc định cho tất cả lời nhắc khác.

Tiếp theo, hãy đăng ký ứng dụng iOS trong dự án Firebase.

firebase apps:create --bundle-id com.example.Quickstart ios ios-quickstart

Khi được nhắc chỉ định Mã App Store, hãy nhấn Enter để bỏ qua bước này.

firebase apps:sdkconfig ios -o Quickstart/GoogleService-Info.plist

Trong Xcode, hãy chọn File > Add Files to "Quickstart" rồi chọn tệp GoogleService-Info.plist.

3. Xem các định nghĩa GraphQL mẫu

Trong SQL Connect, bạn sẽ xác định tất cả giản đồ và thao tác cơ sở dữ liệu bằng GraphQL. Khi bạn khởi chạy dự án, Firebase CLI sẽ tạo một số định nghĩa mẫu để giúp bạn bắt đầu.

dataconnect/schema/schema.gql (trích dẫn)
type Movie @table {
  title: String!
  imageUrl: String!
  genre: String
}

type MovieMetadata @table {
  movie: Movie! @unique
  rating: Float
  releaseYear: Int
  description: String
}
dataconnect/example/queries.gql (trích dẫn)
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

4. Triển khai giản đồ và thao tác

Mỗi khi thay đổi giản đồ, truy vấn hoặc đột biến cơ sở dữ liệu, bạn phải triển khai các thay đổi đó để có hiệu lực trên cơ sở dữ liệu.

firebase deploy --only dataconnect

5. Gieo dữ liệu mẫu vào cơ sở dữ liệu

Dữ liệu gieo này sẽ giúp bạn có thứ để xem khi kiểm thử ứng dụng mẫu. Xin lưu ý rằng ở bước này, bạn đang thực thi GraphQL tuỳ ý, được phép dùng cho các tác vụ quản trị.

firebase dataconnect:execute dataconnect/seed_data.gql

6. Tạo SDK ứng dụng iOS

Lệnh này sử dụng các định nghĩa GraphQL để tạo SDK ứng dụng iOS dành riêng cho cơ sở dữ liệu của bạn. Bạn sử dụng thư viện này trong ứng dụng khách để thực hiện tất cả thao tác cơ sở dữ liệu.

Bạn có thể tạo thư viện cho nhiều nền tảng, bao gồm Kotlin cho Android, JavaScript cho web và Flutter, bằng cách thêm các định nghĩa vào connector.yaml.

firebase dataconnect:sdk:generate
SDK iOS được tạo tự động (trích dẫn)
public class ListMoviesQuery {

  // ...

  @MainActor
  public func execute(
    fetchPolicy: QueryFetchPolicy = .preferCache,
  ) async throws -> OperationResult<ListMoviesQuery.Data> {
    var variables = ListMoviesQuery.Variables()

    let ref = dataConnect.query(
      name: "ListMovies", variables: variables, resultsDataType: ListMoviesQuery.Data.self,
      publisher: .observableMacro)

    let refCast = ref as! QueryRefObservation<ListMoviesQuery.Data, ListMoviesQuery.Variables>
    return try await refCast.execute(fetchPolicy: fetchPolicy)
  }
}

7. Thêm phần phụ thuộc của Firebase vào dự án Xcode

Thêm thư viện đã tạo vào dự án bằng Swift Package Manager. Khi bạn thêm thư viện đã tạo, thư viện này sẽ bao gồm các thư viện cốt lõi của Firebase và thư viện Firebase SQL Connect một cách bắc cầu.

Trong thanh điều hướng Xcode, hãy chọn File > Add Package Dependencies > Add Local rồi chọn thư mục chứa thư viện đã tạo, FirebaseDataConnectGenerated/DataConnectGenerated/. Thư mục chính xác sẽ chứa một tệp có tên là Package.swift.

8. Viết ứng dụng iOS mẫu

Thay thế nội dung của Quickstart/QuickstartApp.swift bằng ứng dụng iOS đơn giản này.

Xin lưu ý rằng ứng dụng này hoàn tất việc truy cập cơ sở dữ liệu cần thiết bằng một hàm trong SDK đã tạo.

import SwiftUI
import FirebaseCore
import FirebaseDataConnect
import DataConnectGenerated

@main
struct QuickstartApp: App {
  init() {
    FirebaseApp.configure()
  }
  var body: some Scene {
    WindowGroup {
      ListMovieView()
    }
  }
}

struct ListMovieView: View {
  @State private var moviesData: ListMoviesQuery.Data?

  var body: some View {
    VStack {
      ForEach(moviesData?.movies ?? []) { movie in
        Text(movie.title)
      }
    }
    .task {
      let result = try? await DataConnect.exampleConnector
          .listMoviesQuery.execute()
      self.moviesData = result?.data
    }
  }
}

9. Dùng thử ứng dụng

Trong Xcode, hãy chạy ứng dụng mẫu để xem ứng dụng này hoạt động.

Các bước tiếp theo

Dùng thử tiện ích SQL Connect VS Code

Khi phát triển bằng SQL Connect, bạn nên sử dụng tiện ích SQL Connect VS Code. Ngay cả khi bạn không sử dụng Visual Studio Code làm môi trường phát triển chính, tiện ích này vẫn cung cấp một số tính năng giúp phát triển giản đồ và thao tác thuận tiện hơn:

  • Máy chủ ngôn ngữ GraphQL, cung cấp tính năng kiểm tra cú pháp và các cụm từ gợi ý tự động hoàn thành dành riêng cho SQL Connect
  • Các nút CodeLens phù hợp với mã của bạn, cho phép bạn đọc và ghi dữ liệu từ các tệp định nghĩa giản đồ , đồng thời thực thi các truy vấn và đột biến từ các định nghĩa thao tác.
  • Tự động đồng bộ hoá các SDK đã tạo với các định nghĩa GraphQL.
  • Quy trình thiết lập trình mô phỏng cục bộ đơn giản.
  • Quy trình triển khai đơn giản sang thực tế.

Sử dụng trình mô phỏng SQL Connect để phát triển cục bộ

Mặc dù hướng dẫn này đã chỉ cho bạn cách triển khai trực tiếp các SQL Connect giản đồ và thao tác sang thực tế, nhưng có thể bạn sẽ không muốn thay đổi cơ sở dữ liệu thực tế khi đang tích cực phát triển ứng dụng. Thay vào đó, hãy thiết lập trình SQL Connect mô phỏng và thực hiện công việc phát triển trên trình mô phỏng này thay vì trên thực tế. Trình mô phỏng sẽ thiết lập một thực thể PGlite cục bộ hoạt động tương tự như một thực thể PostgreSQL trực tiếp trên Cloud SQL.

Tìm hiểu cách viết giản đồ và thao tác cho ứng dụng

Khi phát triển ứng dụng bằng SQL Connect, việc thiết kế giản đồ và thao tác là một trong những nhiệm vụ phát triển đầu tiên và quan trọng nhất mà bạn sẽ hoàn thành.

  • Gemini trong Firebase bảng điều khiển là một công cụ AI có thể tạo giản đồ SQL Connect từ nội dung mô tả ứng dụng bằng ngôn ngữ tự nhiên. Công cụ này có thể giúp bạn bắt đầu rất nhanh, đặc biệt là nếu bạn chưa từng làm việc với cơ sở dữ liệu quan hệ.
  • Ngoài ra, bạn có thể trực tiếp viết giản đồ, truy vấn và đột biến cơ sở dữ liệu bằng GraphQL. Hãy bắt đầu bằng hướng dẫn trong bài viết Thiết kế giản đồSQL Connect, sau đó tiếp tục xem các trang tiếp theo để tìm hiểu cách viết thao tác.

Tìm hiểu cách nhận thông tin cập nhật theo thời gian thực từ SQL Connect

Bạn có thể sử dụng SQL Connect để viết các ứng dụng khách phản ứng với dữ liệu thay đổi theo thời gian thực. Xem bài viết Nhận thông tin cập nhật theo thời gian thực từ SQL Connect.