Quickstarters
Feature Overview
如何构建 Swift 的后台?
40 分
介绍 在本教程中,您将学习如何使用 back4app 为 swift 应用程序构建完整的后端。 我们将逐步整合 back4app 的基本功能——如数据库管理、云代码函数、rest 和 graphql api、用户身份验证、实时查询(实时查询)等——以创建一个安全、可扩展且强大的后端,与您的基于 swift 的客户端应用程序无缝通信。 通过利用 back4app 的快速设置和直观环境,您将大大减少与手动配置服务器和数据库相比所需的时间和精力。 在此过程中,您将获得关键功能的实践经验,包括高级安全功能、使用云作业调度任务以及为外部集成设置 webhook。 在本教程结束时,您将为将这个基础后端服务增强为生产就绪的应用程序做好充分准备,或者根据需要轻松地集成自定义逻辑和第三方api。 您将看到,使用baas平台可以将后端开发转变为更流畅的体验,特别是在创建快速后端或其他任何后端应用程序时。让我们开始吧! 先决条件 要完成本教程,您需要 一个back4app账户和一个新的back4app项目 开始使用back4app。 https //www back4app com/docs/get started/new parse app 如果您没有账户,可以免费创建一个。请按照上面的指南准备好您的项目。 一个swift开发环境 您可以使用 xcode https //developer apple com/xcode/ 作为您的ide来使用swift创建ios或macos应用程序。确保您的计算机上安装了最新的稳定版本的xcode。 熟悉swift编程语言 如果您是swift新手,请在开始之前查看官方的 swift文档 https //swift org/documentation/ 或初学者教程。 parse swift sdk 如果您使用cocoapods,请在您的podfile中添加 pod 'parseswiftog' 。或者如果您使用swift package manager,请在您的依赖项中添加 package(url "https //github com/netreconlab/parse swift git", from "5 0 0") 。在 parse swift文档 https //docs parseplatform org/parse swift/guide/ 中阅读更多信息。 在开始之前,请确保您已准备好所有这些先决条件。设置好您的 back4app 项目并准备好本地 swift 环境将帮助您更轻松地跟随。 步骤 1 – 在 back4app 上创建新项目并连接 在 back4app 上构建您的 swift 后端的第一步是创建一个新项目。这个项目是本教程中讨论的所有后端配置的基础。swift 可以通过使用 parse swift sdk 无缝连接到您的新后端。让我们看看如何操作。 创建新项目 登录到您的 back4app 账户 。 点击您的 back4app 仪表板中的 “新应用” 按钮 。 为您的应用命名 (例如,“swift backend tutorial”)。 创建后,您将在仪表板中看到新应用的列表。这是您将配置数据库、云函数和其他后端应用的关键设置的地方。 连接 parse swift sdk back4app 由 parse 平台提供支持,该平台为您的数据库、实时更新、身份验证等提供基础。您的 swift 应用程序可以通过安装和初始化 parse swift sdk 连接到 back4app。 检索您的 parse 密钥 在您的 back4app 控制面板中,转到您应用的“应用设置”或“安全性与密钥”以找到您的 应用程序 id 和 客户端密钥 您还将看到您的 parse 服务器 url (通常是 https //parseapi back4app com )。 安装 parse swift sdk swift 包管理器 (推荐) dependencies \[ package(url "https //github com/netreconlab/parse swift git", from "5 0 0") ] cocoapods pod 'parseswiftog' 在您的应用中初始化 parse 您可以在您的 swift 项目的主入口点(例如, appdelegate swift 或 swiftui 的 @main 结构中执行此操作。例如: import swiftui import parseswift @main struct myapp app { init() { // replace placeholders with your back4app credentials parseswift initialize( applicationid "your application id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } var body some scene { windowgroup { contentview() } } } 通过此设置,您的 swift 客户端现在可以向 back4app 发送安全请求。您已经建立了一个强大的连接,简化了数据操作,而无需手动进行 rest 或 graphql 调用(尽管如果您愿意,仍然可以使用它们)。 步骤 2 – 设置数据库 在此步骤中,您将配置 back4app 上的后端数据库,并查看如何从您的 swift 代码管理数据。back4app 使用 parse 数据模型,让您可以在类似结构中存储对象。swift 可以通过 parse swift sdk 轻松与这些类进行交互。 创建数据模型 导航到您的 back4app 仪表板中的 “数据库” 部分 。 创建一个新类 (例如,“todo”)。 添加列 以满足您所需的数据,例如 “title”(字符串)和 “iscompleted”(布尔值)。 您还可以让 parse swift sdk 在第一次保存对象时自动创建这些列。无论哪种方式,您的架构必须与您存储的数据匹配,以便您的应用程序能够无缝处理它。 使用 ai 代理创建数据模型 back4app 提供了一个 ai 代理,可以帮助您设计数据模型: 从您的应用仪表板或菜单中打开 ai 代理。 用自然语言描述您的数据模型 。例如:“请创建一个带有 todo 类架构的新 swift 项目。” 让 ai 代理为您自动创建架构 。 读取和写入数据:parse swift sdk 使用 parse swift sdk,您可以创建一个符合 parseobject 的结构来表示您的数据。例如,如果您有一个 todo 类: import parseswift struct todo parseobject { // parseobject protocol properties var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom properties var title string? var iscompleted bool? } 创建一个 todo 对象并保存 var newtodo = todo() newtodo title = "buy groceries" newtodo iscompleted = false task { do { let saved = try await newtodo save() print("saved ", saved) } catch { print("error saving todo ", error) } } 查询所有待办事项 task { do { let todos = try await todo query() find() print("todos ", todos) } catch { print("error fetching ", error) } } 读取和写入数据:rest api 如果您更喜欢标准的http请求,可以使用rest api。例如,创建一个新的待办事项: curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"title" "walk the dog", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo 读取和写入数据:graphql api graphql也受支持。以下是创建待办事项的示例突变: mutation { createtodo(input { fields { title "finish homework" iscompleted false } }) { todo { objectid title iscompleted } } } 使用实时查询 如果您的 swift 应用需要实时更新,back4app 支持实时查询。对于 ios 在您的应用的 服务器设置 中启用实时查询。 通过指定 parse livequeryserverurl 在您的应用中连接 parse configuration serverurl = url(string "https //parseapi back4app com")! parse configuration livequeryserverurl = url(string "wss\ //your subdomain b4a io")! 订阅 实时更新 let subscription = todo query() subscribecallback { subscriptionstate in switch subscriptionstate { case subscribed(let querysubscription) print("subscribed to todo changes!") default break } } 现在,每当创建、更新或删除 todo 时,您将实时收到更新。这对于您的 swift 后端开发中的协作或时间敏感功能特别有帮助。 步骤 3 – 使用 acl 和 clp 应用安全性 什么是 acl 和 clp? back4app 使用 访问控制列表 (acl) 和 类级权限 (clp) 来保护您的数据。acl 允许您定义每个对象的权限,而 clp 为整个类设置默认访问规则。 类级权限 在 back4app 控制面板中: 转到 数据库 并选择一个类(例如,“待办事项”)。 打开 类级权限 配置读取、写入或公共访问的限制。 访问控制列表 (acl) 在 swift 中创建或更新 parseobject 时,可以设置 acl。例如: var acl = parseacl() // only let the current user read and write acl setreadaccess(userid "current user id", value true) acl setwriteaccess(userid "current user id", value true) var todo = todo() todo acl = acl 这确保只有指定的用户可以读取或修改该对象。结合 acl 和 clp 形成了一个强大、分层的安全模型,用于您应用程序的数据。 步骤 4 – 编写云代码函数 为什么使用云代码? 云代码允许您运行服务器端的 swift 逻辑(如果使用原始的 parse 云代码风格,则为 javascript),而无需向客户端暴露秘密。它非常适合验证、触发器、计划任务等。 示例函数 这是一个基于 javascript 的示例,但您也可以使用 typescript 或从 swift 调用。在您的 back4app 云代码 文件夹中,创建 main js parse cloud define("gettaskscount", async (request) => { const query = new parse query("todo") const count = await query count({ usemasterkey true }) return count }) parse cloud beforesave("todo", async (request) => { const todo = request object if (!todo get("title")) { throw "cannot save a todo without a title " } }) 您可能想通过将 npm 模块包含在您的 package json 文件中,然后在 main js 中调用它们。一旦部署,您可以使用 callfunction 从您的 swift 代码中调用这些函数。 部署 通过以下方式部署您的云代码: b4a deploy 您还可以通过 back4app 仪表板进行部署,方法是转到 cloud code > functions 。将您的代码粘贴到在线编辑器中,然后单击 deploy 。 从 swift 调用 task { do { let result = try await parsecloud callfunction("gettaskscount", with \[string any]\()) print("count ", result) } catch { print("error calling cloud function ", error) } } 步骤 5 – 配置身份验证 启用用户身份验证 在 back4app 的 仪表板 , 您将看到一个默认的 user 类用于用户账户。如果需要,请在您的应用的 身份验证设置 中启用任何其他身份验证提供者(apple、facebook、google 等)。 注册和登录(swift) struct user parseuser { var objectid string? var username string? var email string? var password string? var emailverified bool? var createdat date? var updatedat date? var acl parseacl? var originaldata data? } // sign up task { do { var newuser = user() newuser username = "alice" newuser password = "p\@ssword" let signedup = try await newuser signup() print("user signed up ", signedup) } catch { print("error signing up ", error) } } // log in task { do { let user = try await user login(username "alice", password "p\@ssword") print("logged in user ", user) } catch { print("error logging in ", error) } } 社交登录 back4app 支持使用 google、apple 和 facebook 的 oauth 登录。在您的 身份验证 设置页面上配置这些提供者,并在您的 swift 应用中使用相关的 parse swift 集成代码(例如, parsefacebookutils 或者 parseappleutils ) 来处理身份验证流程。有关详细信息,请参见 社交登录文档 https //www back4app com/docs/platform/sign in with apple 。 第 6 步 – 处理文件存储 设置文件存储 您可以在 back4app 中存储图像、视频或任何文件。在 swift 中,您有 parsefile let imagedata = data(/ your image bytes /) let parsefile = parsefile(name "photo jpg", data imagedata) task { do { let savedfile = try await parsefile save() print("file saved ", savedfile url ?? "no url") } catch { print("error uploading file ", error) } } 然后您可以将此文件附加到 parseobject 并保存。检索文件的 url 以在其他地方显示或下载它。 安全考虑 要限制文件访问,您可以使用 parse server 的文件配置 https //www back4app com/docs/platform/file storage 例如,您可能只允许经过身份验证的用户上传文件,或在您的 swift 代码中指定读/写权限。 步骤 7 – 电子邮件验证和密码重置 为什么需要验证和重置电子邮件? 验证用户的电子邮件可以确保其为真实、活跃的邮箱。密码重置帮助您的用户在忘记凭据时安全地恢复账户访问。 在 back4app 中配置 前往 电子邮件设置 并启用 电子邮件验证 编辑您的电子邮件模板以用于验证和重置流程。 从 swift 触发密码重置 task { do { try await user passwordreset(email "alice\@example com") print("password reset email sent!") } catch { print("error requesting password reset ", error) } } 第 8 步 – 使用云作业调度任务 云作业 您可以在 back4app 上调度服务器端任务。例如,清理旧数据或发送每周报告。在您的云代码中定义一个作业,并通过 back4app 仪表板调度它。 parse cloud job("cleanupoldtodos", async (request) => { const now = new date() // example logic remove todos older than 30 days // use master key for privileged operations }) 然后,在 back4app 服务器设置 > 后台作业 , 您可以将其调度为每天运行或在任何间隔运行。 步骤 9 – 集成 webhooks 什么是 webhooks? webhooks 允许您的应用在某些事件发生时自动将数据 post 到外部服务。这非常适合与 slack、stripe 或其他第三方 api 集成。 配置 在您的 back4app 控制面板中,转到 更多 > webhooks 添加一个 webhook 端点(例如, https //example com/webhook )。 选择触发器(例如,“待办事项”中的对象创建)。 对于自定义逻辑,您还可以在 cloud code 触发器中向外部 url 发出请求: 步骤10 – 探索back4app管理面板 什么是管理面板? “ back4app管理应用 ”是一个面向非技术人员或支持人员的点击式界面。它提供了一个简单的图形用户界面来对您的数据执行crud操作——非常适合在开发环境之外管理数据。 启用管理应用 前往应用仪表板 > 更多 > 管理应用 启用管理应用并选择一个子域名。 创建一个管理员用户。 一旦激活,任何拥有适当凭证的人都可以通过用户友好的网页界面查看和编辑您的数据——无需编码。 结论 通过遵循这个完整的教程,您已经学会了 如何为 swift 构建后端 ,使用 back4app。具体来说,您已经: 创建了一个安全的后端 为您的 swift 应用程序。 配置了一个数据库 具有类模式和数据关系。 使用实时查询 (实时查询)进行即时更新。 设置了强大的安全性 通过 acl 和 clp。 使用云代码 在服务器端运行自定义逻辑。 实现了用户身份验证 通过验证和密码重置。 安全地处理文件上传 。 使用云作业调度自动任务 。 了解了 webhooks 以集成外部 api。 探索了管理面板 以进行直接数据管理。 您现在拥有一个功能齐全、可扩展的后端服务,适用于您的 swift 应用程序——可以轻松扩展以处理更复杂的功能,连接到第三方服务,或适应更高的用户流量。您还亲眼见证了 back4app 的 baas 功能与 swift 的现代语法结合如何加速后端开发。 下一步 构建一个生产就绪的 swift 应用 ,通过完善您的 ui/ux。 集成高级功能 ,如专业认证(基于角色的,sso)或用于特定领域规则的额外云代码逻辑。 查看官方 back4app 文档 ,深入了解日志、分析或高级安全性。 探索其他教程 ,如实时聊天、物联网仪表板或基于位置的应用。将这些与外部 api 结合,以解决现实世界的挑战。 这就是如何使用 back4app 为 swift 构建后端!祝编码愉快!
