ResearchKit 框架
《ResearchKit™ 框架》是一个开源软件框架,它使得创建用于医学研究或其他研究项目的应用变得容易。
获取更多信息
- 加入 ResearchKit 社区,讨论 ResearchKit 框架和相关项目的用法。
用例
在 ResearchKit 框架中的一个任务包含一组向用户展示的步骤。所有内容,无论是 调查、同意流程,还是 活跃任务,都作为可以在任务视图中展示的任务来表示。
调查
ResearchKit框架提供了一个预先构建的用户界面,用于在iPhone、iPod Touch或iPad上以模态方式呈现调查。有关更多信息,请参阅创建调查。
同意
ResearchKit框架提供可视同意模板,您可以自定义这些模板以说明您的研究详情,并在必要时获取签名。有关更多信息,请参阅获取同意。
活动任务
如果您是为 iOS 开发,某些研究可能需要调查问题或HealthKit和CoreMotion API提供的被动数据收集功能之外的数据。《ResearchKit》的活动任务邀请用户在半受控条件下进行活动,同时iPhone传感器积极收集数据。有关更多信息,请参阅活动任务。ResearchKit的活动任务不是诊断工具,也不是任何类型的医疗设备,那些活动任务输出的结果不得用于诊断。开发商和研究人员负责遵守所有适用的法律法规,履行对活动任务进一步开发和使用的责任。
图表
ResearchKit包含一个图表模块。它包含三种图表类型:一个饼图(ORKPieChartView
),一个线形图图表(ORKLineGraphChartView
),和一个离散图图表(ORKDiscreteGraphChartView
)。
图表模块中的视图可以独立于ResearchKit的其余部分使用。它们不会自动与其他任何ResearchKit部分连接:开发者必须通过视图的dataSources
提供要显示的数据,这提供了最大的灵活性。
开始使用
要求
主要的 ResearchKit 框架 代码库支持 iOS 系统并且要求 Xcode 8.0 或更高版本。该 ResearchKit 框架 的基本 SDK 版本是 8.0,这意味着使用 ResearchKit 框架 的应用程序可以在运行 iOS 8.0 或更高版本的设备上运行。
安装
可以使用以下方式克隆最新稳定的 ResearchKit 框架 版本:
git clone -b stable https://github.com/ResearchKit/ResearchKit.git
或者,要获取最新的更改,请使用 main
分支
git clone https://github.com/ResearchKit/ResearchKit.git
构建
通过打开 ResearchKit.xcodeproj
并运行 ResearchKit
框架目标来构建 ResearchKit 框架。可选地,也可以运行单元测试。
将 ResearchKit 框架添加到您的应用中
本教程演示了如何将 ResearchKit 框架 嵌入您的应用作为动态框架,并展示一个简单的任务视图控制器。
1. 将 ResearchKit 框架添加到您的项目中
要开始,请将 ResearchKit.xcodeproj
从您的签出目录拖拽到 Xcode 中的 iOS 应用项目。
接着,将 ResearchKit 框架 作为动态框架嵌入到您的应用中,通过将其添加到目标 通用 选项卡的 嵌入的二进制文件 部分来实现,如图下所示。
将 ResearchKit 框架添加到嵌入式二进制文件注意:您还可以使用如 CocoaPods 或 Carthage 之类的 依赖管理器 将 ResearchKit 导入您的项目。
2. 创建一个步骤
在本教程中,我们将使用 ResearchKit 框架 来通过模式显示一个包含单个指令的简单单步任务。
通过添加一些代码创建您任务的步骤,例如在现有视图控制器中的 viewDidAppear:
中。为了保持简单,我们将使用指令步骤(ORKInstructionStep
)并将步骤命名为 myStep
。
Objective-C
ORKInstructionStep *myStep =
[[ORKInstructionStep alloc] initWithIdentifier:@"intro"];
myStep.title = @"Welcome to ResearchKit";
Swift
let myStep = ORKInstructionStep(identifier: "intro")
myStep.title = "Welcome to ResearchKit"
3. 创建一个任务
使用有序任务类(ORKOrderedTask
)创建一个包含 myStep
的任务。有序任务只是任务,后续步骤的顺序和选择不依赖于早期步骤的结果。将您的任务命名为 task
,并用 myStep
进行初始化。
Objective-C
ORKOrderedTask *task =
[[ORKOrderedTask alloc] initWithIdentifier:@"task" steps:@[myStep]];
Swift
let task = ORKOrderedTask(identifier: "task", steps: [myStep])
4. 展示任务
创建一个任务视图控制器(ORKTaskViewController
),并用您的 task
进行初始化。任务视图控制器管理任务并收集每个步骤的结果。在这种情况下,您的任务视图控制器仅显示您的指令步骤。
Objective-C
ORKTaskViewController *taskViewController =
[[ORKTaskViewController alloc] initWithTask:task taskRunUUID:nil];
taskViewController.delegate = self;
[self presentViewController:taskViewController animated:YES completion:nil];
Swift
let taskViewController = ORKTaskViewController(task: task, taskRun: nil)
taskViewController.delegate = self
present(taskViewController, animated: true, completion: nil)
上面的代码片段假定您的类实现了 ORKTaskViewControllerDelegate
协议。该协议有一个必需的方法,您必须实现它来处理任务的完成。
Objective-C
- (void)taskViewController:(ORKTaskViewController *)taskViewController
didFinishWithReason:(ORKTaskViewControllerFinishReason)reason
error:(NSError *)error {
ORKTaskResult *taskResult = [taskViewController result];
// You could do something with the result here.
// Then, dismiss the task view controller.
[self dismissViewControllerAnimated:YES completion:nil];
}
Swift
func taskViewController(_ taskViewController: ORKTaskViewController,
didFinishWith reason: ORKTaskViewControllerFinishReason,
error: Error?) {
let taskResult = taskViewController.result
// You could do something with the result here.
// Then, dismiss the task view controller.
dismiss(animated: true, completion: nil)
}
如果现在运行您的应用程序,您应该看到第一个 ResearchKit 框架 指令步骤。
ResearchKit 框架还能做什么呢?
《ResearchKit》的ORKCatalog 示例应用程序是一个不错的入门点。在 ResearchKit 的 samples
目录中找到此项目。该项目在第一个标签页中包含了对 ResearchKit 框架 支持的所有步骤类型列表,并在第二个标签页中显示上一个完成任务的浏览器。第三个标签页展示了 图表模块 的一些示例。
许可证
除非明确指出其他许可证,否则在《ResearchKit》存储库中提供的源代码是在以下许可证下可用
Copyright (c) 2015 - 2018, Apple Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
3. Neither the name of the copyright holder(s) nor the names of any contributors
may be used to endorse or promote products derived from this software without
specific prior written permission. No license is granted to the trademarks of
the copyright holders even if such marks are included in this software.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.