使用 Supabase 与 iOS 和 SwiftUI
了解如何创建一个 Supabase 项目,向你的数据库添加一些示例数据,并从 iOS 应用程序查询数据。
1# First, get your access token from https://supabase.org.cn/dashboard/account/tokens2export SUPABASE_ACCESS_TOKEN="your-access-token"34# List your organizations to get the organization ID5curl -H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \6 https://api.supabase.com/v1/organizations78# Create a new project (replace <org-id> with your organization ID)9curl -X POST https://api.supabase.com/v1/projects \10 -H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \11 -H "Content-Type: application/json" \12 -d '{13 "organization_id": "<org-id>",14 "name": "My Project",15 "region": "us-east-1",16 "db_pass": "<your-secure-password>"17 }'1-- Create the table2create table instruments (3 id bigint primary key generated always as identity,4 name text not null5);6-- Insert some sample data into the table7insert into instruments (name)8values9 ('violin'),10 ('viola'),11 ('cello');1213alter table instruments enable row level security;通过添加 RLS 策略使表格中的数据可公开读取
1create policy "public can read instruments"2on public.instruments3for select to anon4using (true);使用 Xcode 创建 iOS SwiftUI 应用程序
打开 Xcode > 新建项目 > iOS > App。如果你已经有一个可用的应用程序,可以跳过此步骤。
安装 Supabase 客户端库
使用 Swift Package Manager 将 supabase-swift 包添加到你的应用程序中。
在 Xcode 中,导航到 文件 > 添加包依赖...,并在搜索栏中输入仓库 URL https://github.com/supabase/supabase-swift。有关详细说明,请参阅 Apple 的 添加包依赖教程。
确保将 Supabase 产品包作为依赖项添加到你的应用程序目标。
初始化 Supabase 客户端
创建一个名为 Supabase.swift 的新文件,并使用你的项目 URL 和公共 API (anon) 密钥添加一个新的 Supabase 实例
项目 URL
可发布密钥
匿名密钥
Supabase.swift
1import Supabase23let supabase = SupabaseClient(4 supabaseURL: URL(string: "YOUR_SUPABASE_URL")!,5 supabaseKey: "YOUR_SUPABASE_PUBLISHABLE_KEY"6)你还可以从 项目的 连接 对话框 获取项目 URL 和密钥。
API 密钥的更改
Supabase 正在更改密钥的工作方式,以提高项目安全性和开发人员体验。您可以 阅读完整的公告,但在过渡期间,您可以使用当前的 anon 和 service_role 密钥以及新的可发布密钥,格式为 sb_publishable_xxx,它将取代旧的密钥。
在大多数情况下,你可以从 项目的 连接 对话框 获取正确的密钥,但如果你想要特定的密钥,可以在 项目的设置页面中的 API 密钥部分 找到所有密钥
- 对于旧版密钥,从 旧版 API 密钥 选项卡中复制
anon密钥用于客户端操作,并复制service_role密钥用于服务器端操作。 - 对于新密钥,打开 API 密钥 选项卡,如果您还没有可发布密钥,请单击 创建新的 API 密钥,并复制 可发布密钥 部分中的值。
阅读 API 密钥文档 以全面了解所有密钥类型及其用途。
为乐器创建数据模型
创建一个可解码的结构体,以从数据库中反序列化数据。
将以下代码添加到名为 Instrument.swift 的新文件中。
Instrument.swift
1struct Instrument: Decodable, Identifiable {2 let id: Int3 let name: String4}从应用查询数据
使用 task 从数据库中获取数据,并使用 List 显示它。
用以下代码替换默认的 ContentView。
ContentView.swift
1import SwiftUI23struct ContentView: View {45 @State var instruments: [Instrument] = []67 var body: some View {8 List(instruments) { instrument in9 Text(instrument.name)10 }11 .overlay {12 if instruments.isEmpty {13 ProgressView()14 }15 }16 .task {17 do {18 instruments = try await supabase.from("instruments").select().execute().value19 } catch {20 dump(error)21 }22 }23 }24}启动应用
通过在 Xcode 中按 Cmd + R 在模拟器或物理设备上运行该应用程序。
设置深层链接#
如果你想实现魔法链接或 OAuth 等身份验证功能,则需要设置深层链接以将用户重定向回你的应用程序。有关配置 iOS 应用程序的自定义 URL 方案的说明,请参阅 深层链接指南。
下一步#
- 在 Swift 教程 中了解如何构建具有身份验证的完整用户管理应用程序
- 在 GitHub 上探索 supabase-swift 库