大多数浏览器和
Developer App 均支持流媒体播放。
-
构建研究和护理 app,第 1 部分:设置新用户引导
敬请了解如何让 ResearchKit 和 CareKit 共同协作,消除纸质问卷的单调乏味。请随我们一起编程,构建有效的护理试点 app。探索使用 ResearchKit 进行新用户引导和征求同意的最佳实践,并了解您的 app 如何通过利用 CareKit 的商店和 UI 组件来请参与者签署同意文件。这是由三个部分构成的“编程临摹课程”系列的第一节内容。为了能充分了解这一系列的内容,我们建议您先大体熟悉一下 ResearchKit 和 CareKit。有关更多背景信息,请观看 WWDC19 的“ResearchKit 和 CareKit 的重新构思”。
资源
相关视频
WWDC21
-
下载
♪低音音乐播放♪ ♪ 埃里克霍恩伯格:大家午安 感谢你今天加入我们 我们为你准备了一些很棒的内容 我们要来讨论一个代码 你和我将一起构建 一个研究和护理app ResearchKit是开源iOS框架 Apple与我们的 GitHub社区合作维护 它提供了UI元素 用于收集同意 管理调查 以及参与者执行活动时 记录传感器数据 例如身体或认知练习 同样 CareKit也是一个 完全开源的框架 旨在帮助构建面向患者的 护理app 它擅长安排 你希望患者执行的任务 例如服药或打电话给他们的医生 它还为与健康相关的数据 提供了安全持久层 并提供了绘制图表的实用工具 在过去的WWDC课程中 我们经常单独讨论这两个姊妹框架 但今年我们将向你展示 如何将它们一起使用 为患者创造更好的体验… 抱歉 我们应该…我应该把手机关静音的 我们要暂停吗? 工作人员:不用 你就接听吧
埃里克:嘿 杰米 怎么了? 杰米:嘿 埃里克 我知道你现在正忙着为WWDC做准备 但我想告诉你 我们的物理治疗研究app 刚刚获得资金 这项最新的研究能帮助很多人! 你认为我们可以立即发布该app的 第一个版本吗? 埃里克:嘿 杰米 这真是… 这真是个好消息 我真的很兴奋 问题是 我们正在用 Dub Dub代码 杰米:所以你已经开始编码了? 太棒了! 这个app的名字要叫“恢复健康” 这会是一个物理治疗app 帮助参与者在手术后加强膝盖 这个app会造成轰动 我有很多很棒的想法 但首先 这一点非常重要 参与者开始使用该app之前 我们必须得到参与者的同意 我们要向他们解释所有的法律术语 但我真的想以一种 不吓人的方式来做 你知道吗? 我们还需要获得参与者的签名 并让他们同意与我们共享数据 等一下 埃里克 我收到了来自临床团队的信息 哇 看来第一批参与者 将于周一出院 埃里克 你现在可以开始处理 登入流程吗? 我得跟其他人联络 过一会儿再打给你! 这太棒了!
埃里克:好的 那好吧 我想我们得开始编码了 让我们…让我们看看我们能不能 在杰米开完会之前完成登入流程 所以 在本次课程中 让我们专注于登入流程和同意 向参与者解释 我们将收集哪些数据 谁将有权访问它、将用于什么目的 将保留多长时间… 让这一切都易于理解… 这对一项好的研究来说是非常重要的 我们将向你展示ResearchKit的 一些最新的佳作 它们将帮助你将app中 这一非常重要的部分 处理得恰到好处 作为奖励 我们将展示一种聪明的方法 将登入和同意流程直接融入 基于CareKit的app中 具体来说 我们将建立 一个标准的CareKit app 但在护理计划内容公布之前 参与者必须完成注册 作为同意和登入流程的一部分 我们将建立一些指导步骤 告诉参与者 他们会被要求做什么 我们发现 在进入实际同意部分之前 像这样引导参与者 确实有助于改善他们的体验 我们将向你展示如何收集签名 我们还会示范如何使用ResearchKit 预先请求HealthKit、通知 和设备动作的授权 所有这些都是登入流程的一部分 如果你想继续学习 可以在课程资源中找到入门项目 让我们打开Xcode开始吧 我们将从这里开始 我们今天会讨论四个文件 首先是AppDelegate 这是我们与CareKit的存储 进行互动的地方 在Surveys.swift中 我们将使用ResearchKit 写出一些调查 接下来 我们有 CareFeedViewController 和InsightsViewController 我们将为我们的app构建UI 现在 如果你执行starter app 你会看到现在实际上没有太多东西 它只是没有内容的 OCKDailyPageViewController 它能让我们在不同日期之间跳来跳去 但里面什么都没有 我们的工作就是把这些都填上 在角落里还有“观点”标签页 我们将在第三段中回到这边 现在 我们要做的 是在参与者的动态中 显示一张同意卡 这个同意任务将为app的其余部分 提供访问权限 在完成之前不会显示任何其他内容 一旦完成 所有其他任务都会出现
在这里跳转到AppDelegate.swift 我们的第一步将是 持久化CareKit任务 以供登入流程 现在 每当我们创建任务时 我们都需要定义一个时间表 指定任务在参与者的动态中 出现的频率 对于登入流程 我们会使用每日时间表 这样他们每天都会被提示要登入流程 直到他们同意为止 接下来 我们将创建一个任务 我们给它一个ID 可以是我们想要的任何ID 只要是唯一的就行了 随机标识符很好 但在这种情况下 我在另一个文件中定义了 一个常量 我们还需要传入我们刚刚 创建的时间表 我们还要指定一些说明 并指出登入流程不应影响遵守情况 这基本上代表登入流程不会计入 你在大多数CareKit app顶部 看到的完成环中 最后 我们可以将任务 持久化到我们的存储中 我们将继续打印一条信息 让我们知道它是否成功 好的 我们已经在存储中 完成了登入流程任务 可以开始了 现在我们已经准备好 让它出现在参与者的动态中 我们将跳过 CareViewController.swift 在那里我们将告诉CareKit 我们希望它如何显示 在这里 我们子类化 OCKDailyPageViewController 这是我们刚才看到的日历和动态 我们覆盖了为日期方法准备的 listViewController 每次使用者滑动到新日期时 都会调用此方法 我们的工作就是检查这个日期 确定我们想在那个日期显示什么 并将适当的内容 增加到listViewController中 现在 我们想做的第一件事 是检查参与者是否已完成登入流程 因为我们将根据该问题的答案 显示不同的内容 让我们再往下一点 写出一个方法 来做到这一点 在我们的 checkIfOnboardingIsComplete 方法中 我们将创建一个OCKOutomeQuery 我们将查询 与登入流程任务相关的所有结果 当我们的查询返回时 我们将检查是否找到任何结果 如果没有 那就说明登入流程尚未完成 如果有 就代表登入流程已经完成 我们将在这里使用我们的新方法 并根据登入流程是否完成 我们将只显示同意任务 或所有其他任务 好 到目前为止 一切顺利 我们现在有了一个机制 来要求参与者在进入app的 其余部分之前完成登入 下一步是设置登入流程 在这里 我们想创建一个CareKit任务卡 来显示一个ResearchKit调查 但在我们这样做之前 我们需要实际创建 一个ResearchKit调查 以便有东西可以显示 我们将跳转到Surveys.swift处理 让我们开始我们的函数 我们的登入流程调查 将包括五个步骤 欢迎步骤、指导步骤 签名步骤、许可步骤 最后是完成步骤 第一个步骤是欢迎步骤 也就是ORKInstructionStep 我们今天会看到很多这样的说明步骤 每当我们创建一个 ResearchKit步骤时 我们都需要给它一个唯一标识符 你可以使用任何你喜欢的模式 包括随机标识符 我发现这种受路径启发的方法 非常适合我 我们还将指定一个标题 和一些detailText 以及标题图片 好了 接下来 第二步是我们的知情同意步骤 这也是个指导步骤 但这次 我们要添加一些主体项目 主体项目基本上是项目符号 但我们可以选择使用图片 在本例中为SF符号 来代替项目符号 这个主体项目告诉参与者 他们将被要求共享一些健康数据 让我们创建第二个主体项目告诉他们 将被要求完成任务 第三个主体项目告诉参与者 他们会被要求提供签名 让我们再添加一个来提醒他们 他们的数据会被保护隐私和安全 最后 我们将这些主体项目插入到 我们的指导步骤中 这包含了说明 接下来是收集签名 幸运的是 ResearchKit使这部分变得非常简单 可以使用ORKWebViewStep收集签名 将showSignatureAfterContent 属性设置为true 将提示ResearchKit在步骤底部 显示签名框 我们可以以HTML格式 提供实际的同意文件 它将显示在签名框的正上方 好了 签名非常快速和简单! 最后一点是请求权限 对于第四步骤 我们将使用我的队友派瑞斯 去年在WWDC上介绍的 HealthKitPermissionType 来收集权限 它要求我们指定两组HealthKit类型 一组是我们想要写入的权限 一组是我们想要读取的权限 今年 我们将推出两种新的权限类型 第一个是 ORKNotificationPermissionType 它允许我们请求显示警报 标记app和播放声音的权限 我们还引入了 ORKMotionActivityPermissionType 这将帮助我们请求访问设备运动数据 我们将把所有这三个步骤都传递给 requestPermissionStep 这样就完成了我们的第四步骤 第五步骤 也是最后一步 将是完成步骤 感谢参与者加入杰米的研究 所有这些步骤都会被链接到 ORKOrderedTask中 我们将按照我们希望ResearchKit 呈现它们的顺序传递这些步骤 然后从此方法返回任务 好的 现在我们已经定义了 整个登入流程和同意流程 让我们跳回到 CareFeedViewController 并重新查看如何从 基于CareKit的app中显示它 我们将引入一个全新的类 OCKSurveyTaskViewController 它是专门为此目的而构建的 与所有其他CareKit视图控制器一样 我们传递了要显示的任务ID 以及eventQuery和storeManager 此外 我们还需要 我们刚刚创建的调查 和一个将ResearchKit结果转换为 一系列CareKit结果值的闭包 我们将在第二部分中 更详细地讨论这个闭包 现在 我们只说保留参与者 完成登入流程的日期就足够了 我们还想将此任务卡 附加到我们的动态中 现在 实际上还有一个步骤 那就是确保在参与者完成登入流程后 重新加载动态 我们可以实现的一种方法 是将自己设置为 视图控制器的调查任务委托 然后在下面这里 我们可以实现委托方法 调查任务视图控制器 didFinish任务与结果 在这个方法的主体中 我们可以检查登入流程是否成功完成 基本上就是说 参与者没有中途取消 他们坚持到底 成功地完成了任务 如果是这种情况 我们可以调用reload()来刷新动态 好了 我们的登入流程卡就设置好了 当参与者完成登入流程后 我们将保存一个OCKOutcome 然后重新加载动态 看起来不错 我想就是这样了 让我们执行我们的app 并确认一切正常
你可以看到 在我们开始使用该app之前 我们被要求同意 而这就是我们想要的 让我们点击这里的开始按钮 我们将看到我们刚刚创建的欢迎步骤 迎接我们 下一步是使用我们定义的 主体项目的指导步骤 我们选择的SF Symbols 真的让它栩栩如生 接下来是签名步骤 所以我将在此处向下滚动并签名… 然后我们继续进行授权步骤 首先 我们将授权HealthKit 就这样允许 接下来是通知 然后是设备动作 最后一页是我们的完成步骤 让我们知道我们都完成了 并感谢我们的参与 现在我们又回到了app动态中 请注意 我们不会再看到 完成同意的提示 因为我们现在已经完成了 相反的 这是我们app所有真正内容 出现的地方 我们在下一次课程中会讲到
嘿Siri 你能发信息给杰米 告诉他我们已经完成了 登入流程和同意吗? 你可以在 researchandcare.org上找到 有关我们框架的更多信息 如果你想阅读源代码… 或者贡献! 这两个框架都可以在GitHub上找到 请再次加入我们的下一次课程 我先和杰米确认一下 然后再和你讨论第二部分 再见! ♪
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。