在本快速入门中,您将创建并部署一个小型的示例数据库,然后从 iOS 应用访问该数据库。
前提条件
如需完成本快速入门,您需要具备以下条件:
- 安装了以下工具的环境:
- 最新版本的 Xcode。
- Firebase CLI。如果您已安装 NPM,请运行以下命令:
否则,请参阅相关文档,了解安装说明。npm install -g firebase-tools@latest
- Google 账号。
教程
| 教程 | |
|---|---|
1. 创建新的 Xcode 项目在 Xcode 中,使用 App 模板创建新项目。 |
将项目命名为 Quickstart,并将软件包标识符设为 com.example.Quickstart。
在空文件夹(例如 |
2. 初始化 Firebase 项目切换到 Xcode 项目的项目目录,并在其中初始化 Firebase 项目。 |
cd ~/qs-iosfirebase login --reauthfirebase init dataconnect出现提示时,请选择以下选项:
接受所有其他提示的默认值。 接下来,在 Firebase 项目中注册 iOS 应用。 firebase apps:create --bundle-id com.example.Quickstart ios ios-quickstart当系统提示您指定 App Store ID 时,请按 Enter 键跳过此步骤。 firebase apps:sdkconfig ios -o Quickstart/GoogleService-Info.plist在 Xcode 中,依次选择 File > Add Files to "Quickstart",然后选择 |
3. 查看示例 GraphQL 定义在 SQL Connect 中,您可以使用 GraphQL 定义所有数据库架构和操作。初始化项目时,Firebase CLI 会创建一些示例定义,帮助您入门。 |
dataconnect/schema/schema.gql(摘录)
type Movie @table { title: String! imageUrl: String! genre: String } type MovieMetadata @table { movie: Movie! @unique rating: Float releaseYear: Int description: String } query ListMovies @auth(level: PUBLIC) { movies { id title imageUrl genre } } |
4. 部署架构和操作无论何时对数据库架构、查询或突变进行更改,您都必须部署这些更改,才能使它们在数据库中生效。 |
|
5. 使用示例数据为数据库播种此初始数据将为您提供在测试示例应用时可供查看的内容。请注意,在此步骤中,您正在执行任意 GraphQL,这对于管理任务是允许的。 |
|
6. 生成 iOS 客户端 SDK此命令使用您的 GraphQL 定义生成专门针对您的数据库的 iOS 客户端 SDK。您可以在客户端应用中使用此库来执行所有数据库操作。 您可以通过向 |
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. 将 Firebase 依赖项添加到您的 Xcode 项目中使用 Swift Package Manager 将生成的库添加到您的项目中。添加生成的库时,它会以传递方式包含 Firebase 核心库和 Firebase SQL Connect 库。 |
在 Xcode 导航栏中,依次选择 File > Add Package Dependencies > Add Local,然后选择包含生成的库 |
8. 编写示例 iOS 客户端将 请注意,应用使用生成的 SDK 中的函数完成必要的数据库访问。 |
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. 试用此应用在 Xcode 中运行示例应用,查看其运行效果。 |
|
后续步骤
试用 SQL Connect VS Code 扩展程序
使用 SQL Connect 进行开发时,我们强烈建议使用 SQL Connect VS Code 扩展程序。 即使您不使用 Visual Studio Code 作为主要开发环境,该扩展程序也提供了多项功能,可让架构和操作开发更加便捷:
- 一个 GraphQL 语言服务器,提供特定于 SQL Connect 的语法检查和自动补全建议
- 与代码位于同一行的 CodeLens 按钮,可让您从架构定义文件中读取和写入数据,并从操作定义中执行查询和突变。
- 自动使生成的 SDK 与 GraphQL 定义保持同步。
- 简化了本地模拟器设置。
- 简化了向生产环境的部署。
使用 SQL Connect 模拟器进行本地开发
虽然本教程介绍了如何将 SQL Connect 架构和操作直接部署到生产环境,但您可能不希望在积极开发应用时更改生产数据库。建议您设置 SQL Connect 模拟器,并针对该模拟器(而非生产环境)开展开发工作。模拟器会设置一个本地 PGlite 实例,该实例的行为与 Cloud SQL 上的实时 PostgreSQL 实例类似。
了解如何为应用编写架构和操作
使用 SQL Connect 开发应用时,设计架构和操作是您要完成的首要任务之一,也是最重要的开发任务之一。
- Firebase 控制台中的 Gemini 是一款 AI 工具,可根据应用的自然语言描述生成 SQL Connect 架构。借助此工具,您可以非常快速地开始使用,尤其是在您之前从未处理过关系型数据库的情况下。
- 或者,您也可以直接使用 GraphQL 编写数据库架构、查询和变更。首先,请参阅设计 SQL Connect 架构中的指南,然后继续浏览后续页面,了解如何编写操作。
了解如何从 SQL Connect 获取实时更新
您可以使用 SQL Connect 编写可实时响应数据变化的客户端应用。 请参阅获取来自 SQL Connect 的实时更新。