Quickstarters
Feature Overview
如何为 WatchOS 构建后端?
37 分
介绍 在本教程中,您将发现 如何为 watchos 应用程序构建后端,使用 back4app。 无论您是在为您的 iphone 应用程序 创建一个 watchkit 扩展 还是设计一个独立的 apple watch 体验,back4app 通过提供必要的工具简化了您的工作。 您将集成安全数据库、云代码函数、实时查询(实时查询)和用户身份验证等功能——所有这些都无需管理自己的服务器。 您还将看到 back4app 的快速启动程序和易于使用的环境如何使您能够专注于您的 watchos 应用程序 功能,而不是设置服务器。 在此过程中,您将学习处理任务,例如调度作业、设置 webhook 和配置推送通知。 到最后,您将拥有一个坚实的基础,以扩展您的手表应用程序或 ios 应用程序 以满足生产级需求,同时在 互联网连接 ) 之间提供无缝的数据同步,连接 watchkit 应用程序 和您的后端。 先决条件 一个 back4app 账户和一个新的 back4app 项目 开始使用 back4app https //www back4app com/docs/get started/new parse app 如果您没有账户,可以免费创建一个。请按照上面的指南准备您的项目。 一个 watchos/xcode 开发环境 您应该安装了 xcode 和 watchos sdk 您可以在真实的 apple watch 或模拟器上运行和构建您的 watchkit 扩展 parse swift sdk 使用 swift 包管理器 https //github com/netreconlab/parse swift 来安装和配置 sdk 以用于您的 watchos 或组合的 ios 应用 熟悉 swift、xcode 和 apple 的开发生态系统 apple 开发者文档 https //developer apple com/documentation/ 如果您是 apple 平台的新手,请在开始之前花一些时间浏览 watchos 和 ios 文档。 在开始之前,请确保您满足这些先决条件。设置好您的 back4app 项目并准备好本地 watchos 环境将帮助您顺利进行 步骤 1 – 在 back4app 上创建新项目并连接 为什么您需要一个 back4app 项目 一个新的 back4app 项目对于存储所有数据和运行云代码以支持您的 watchos 应用 这构成了您后端的基础 创建您的项目 登录到 back4app。 点击 “新应用” 在仪表板上。 为您的应用命名(例如,“watchos 后端 教程”)。 安装 parse swift sdk 在您的 package swift 中添加 parse swift 依赖项,或通过使用 文件 → swift 包 → 添加包依赖项 在 xcode 中。提供 url dependencies \[ package(url "https //github com/netreconlab/parse swift git", from "5 0 0") ] 在您的 watchos 或共享代码中初始化 parse 在您的 watchkit 应用的启动代码中或在一个两个 watchos 和 iphone 应用 , 初始化 parse @main struct mywatchapp app { init() { task { do { try await parseswift initialize( applicationid "your app id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } catch { print("error initializing parse \\(error)") } } } var body some scene { windowgroup { contentview() } } } 此时,您的 watchos 应用可以与 back4app 后端进行通信。无论是独立的 apple watch 应用还是与 iphone 应用 配对的 watchkit 扩展 , 所有后端数据都通过 parse swift sdk 流动。 步骤 2 – 设置数据库 1\ 创建数据模型 back4app 使用 parse server 的写时模式特性。您可以在 back4app 数据库 部分定义表(类),或者在对象首次保存时让它们自动创建。例如,如果您的 watch 应用 跟踪健康数据,您可能会有一个 “healthmetrics” 类,包含心率、步数或锻炼类型等字段。 2\ 使用ai代理创建数据模型 back4app的 ai代理 让您用简单的语言描述您的架构 在您的应用仪表板中打开 ai代理 。 提供详细信息,例如“请设置一个watch metrics类,字段为:dailysteps(数字),heartrate(数字)。” ai将自动为您创建架构。 3\ 使用sdk读取和写入数据 以下是从watchos应用保存和查询数据的示例。假设我们有一个 healthmetrics 结构 import parseswift struct healthmetrics parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var dailysteps int? var heartrate int? } // saving data func savemetrics(steps int, heart int) async { var metrics = healthmetrics() metrics dailysteps = steps metrics heartrate = heart do { let saved = try await metrics save() print("saved metrics \\(saved)") } catch { print("error saving \\(error)") } } // querying data func fetchlatestmetrics() async { let query = healthmetrics query() do { let results = try await query find() print("fetched \\(results count) items") } catch { print("error fetching \\(error)") } } 4\ 使用 rest api 读取和写入数据 如有需要,您的 watchos 或 ios 应用 也可以发送 rest 请求: curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"dailysteps" 8000, "heartrate" 75}' \\ https //parseapi back4app com/classes/healthmetrics 5\ 使用 graphql 读取和写入数据 back4app 还提供了一个 graphql 端点。例如: mutation { createhealthmetrics(input { fields { dailysteps 7500 heartrate 70 } }) { healthmetrics { objectid dailysteps heartrate } } } 6\ 使用实时查询(可选) 如果您需要在您的 apple watch 上实时更新数据,请启用实时查询: 在 back4app 的 服务器设置 中开启 实时查询 在您的 watchos 代码中配置实时查询 url: parselivequery configure(url url(string "wss\ //your subdomain b4a io")!) 然后订阅更改: func subscribemetricsupdates() async throws { let subscription = healthmetrics query() subscribe() for try await event in subscription { switch event { case created(let newdata) print("new data \\(newdata)") case updated(let updateddata) print("updated \\(updateddata)") default break } } } 步骤 3 – 使用 acl 和 clp 应用安全性 1\ 简要概述 back4app 允许访问控制列表 (acls) 和类级权限 (clps) 来保护您的数据库。例如,您可以限制某些指标仅对生成它们的用户可见,或仅允许经过身份验证的帐户读取访问权限。 2\ 分步设置 类级权限 前往 数据库 → 类 → 安全 来定义默认值(例如,所有人只读,所有者可写)。 代码中的 acls 您可以将 acls 添加到 watchkit 或共享代码中的每个对象。例如: if let user = user current { var acl = parseacl() acl setreadaccess(user user, value true) acl setwriteaccess(user user, value true) var metrics = healthmetrics() metrics acl = acl } 这确保只有登录用户可以查看或修改他们创建的 healthmetrics 对象。 步骤 4 – 编写云代码函数 1\ 为什么使用云代码 云代码帮助您在服务器端运行复杂或机密的操作,例如数据验证、外部 api 调用或日志记录。此设置有助于最小化 watchos 设备的工作负载并延长 apple watch 的电池寿命。 2\ 示例函数 在您的 main js parse cloud define('processmetrics', async (request) => { const { dailysteps, heartrate } = request params; if (!dailysteps || !heartrate) { throw 'missing parameters '; } // example simple calculation return dailysteps heartrate; }); 3\ 部署 使用 back4app cli https //www back4app com/docs/local development/parse cli 进行部署: b4a deploy 4\ 安装 npm 模块 如果您在 cloud code 中需要外部库: 在 package json 中添加依赖项(在您的 cloud code 文件夹内)。 在 main js 中使用 require('your lib') 步骤 5 – 配置身份验证 1\ 启用用户身份验证 默认情况下, user 类在 back4app 中已准备好。确保“启用类级权限”已正确设置用户对象。 2\ 代码示例 在 parse swift 中,您可以从 watchos 代码中注册用户: struct user parseuser { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var username string? var email string? var emailverified bool? var password string? var authdata \[string \[string string]?]? } func signupnewuser(name string, pass string, mail string) async { var newuser = user() newuser username = name newuser password = pass newuser email = mail do { let signedup = try await newuser signup() print("sign up successful \\(signedup)") } catch { print("error signing up \\(error)") } } 3\ 社交登录 如果您计划在 watchos 或 iphone 应用中集成 apple、google 或 facebook 登录,您可以使用相关的 parse swift 社交登录功能。有关详细信息,请参见 back4app 文档 https //www back4app com/docs/platform/sign in with apple 。 步骤 6 – 处理文件存储 1\ 设置文件存储 如果您的 watch 应用 需要上传图像、日志或小数据文件,您可以依赖于 parsefile 。 func uploadfile(data data, filename string) async { let file = parsefile(name filename, data data) do { let savedfile = try await file save() print("uploaded file \\(savedfile url ?? "")") } catch { print("error uploading file \\(error)") } } 2\ 示例 您可能会存储锻炼图像或每日进度快照: let snapshotdata = // some image data from watch screenshot task { await uploadfile(data snapshotdata, filename "workout jpg") } 3\ 安全考虑 检查您的文件 acl。默认情况下,如果有人获得直接链接,文件 url 是可访问的。您可以通过解析服务器的文件配置来保护或控制文件访问。 步骤 7 – 电子邮件验证和密码重置 1\ 概述 apple watch 用户可能并不总是在手表上直接管理登录,但启用电子邮件验证有助于保护他们的数据。 2\ back4app 仪表板配置 转到 应用设置 → 电子邮件 开启 电子邮件验证 根据需要自定义模板。 3\ 代码/实现 对于密码重置: do { try await user requestpasswordreset(email "example\@domain com") } catch { print("error requesting password reset \\(error)") } 步骤 8 – 使用云作业调度任务 1\ 云作业的功能 云作业让您自动化后台任务,例如旋转旧数据或生成 watchos 分析的使用报告。 2\ 示例 在 main js parse cloud job('cleanupmetrics', async (request) => { const query = new parse query('healthmetrics'); // for example, remove records older than 7 days const now = new date(); const cutoff = new date(now 7 24 60 60 1000); query lessthan('createdat', cutoff); const oldmetrics = await query find({ usemasterkey true }); await parse object destroyall(oldmetrics, { usemasterkey true }); return `deleted ${oldmetrics length} old records `; }); 部署您的代码。 转到 应用设置 → 服务器设置 → 后台作业 并每天调度它。 步骤 9 – 集成 webhooks 1\ 定义 webhooks 在您的应用中发生某些事件时通知外部服务。例如,您可能希望每次记录新指标时向 slack 频道发送通知。 2\ 配置 在 back4app 仪表板中,转到 更多 → webhooks 添加一个带有端点的 webhook(如 slack url)。 选择事件(例如,“healthmetrics 中的新记录”)。 3\ 示例 每当用户添加新的 dailysteps 条目时,您的 slack 频道会收到通知。您还可以在 cloud code 中定义更复杂的逻辑,以向外部服务发送自定义负载。 步骤 10 – 探索 back4app 管理面板 1\ 在哪里找到它 管理面板可以通过您的 back4app 控制台访问,路径为 更多 → 管理应用 如果您需要一个简单的界面供非技术利益相关者进行基于 web 的数据管理,请启用它并创建一个管理员用户。 2\ 功能 查看和编辑数据 管理日志和云作业 跟踪分析或推送通知 这是一种轻松的方式,可以在不需要直接数据库或代码访问的情况下协作处理数据。 结论 在本指南中,您学习了 如何为 watchos 构建后端 ,使用 back4app 的强大功能。您设置了安全的数据库架构,编写了云代码,处理了实时查询,并实现了用户身份验证。现在您的 watchkit 应用 可以以最小的麻烦存储和同步数据。 下一步 完善您的手表应用 ,通过集成高级云功能以实现个性化通知或数据转换。 探索 额外的 ios 应用 功能,例如后台同步和缓存策略,以便于您的 apple watch 。 阅读 官方 back4app 文档 https //www back4app com/docs/ ,了解更多关于高级安全性、分析和性能的信息。 为 app store 优化 ,以分发您的 watchos 扩展或独立手表应用。 通过扩展您的后端,您可以提供强大的 watchos 应用 ,即使在有限的 互联网连接 下也能无缝工作。继续构建,享受 back4app 为您的 apple watch 体验带来的强大功能!