翻譯自蘋果官方文檔,譯者:@星夜暮晨,@有情況_R
ResearchKit 框架是一個開源的軟件框架,這個框架是為了讓開發者和研究人員來更簡單的創建研究型軟件。這個新的框架利用了 iPhone 的傳感器和能力來記錄運動軌跡,采取措施以及記錄數據。使用者可以實現在任何地方實現自己的想法和收集數據。
模塊
ResearchKit 框架提供了可以被調整的模塊,這些模塊中有一些最基本的研究必要元素:調研,許可和活動任務。你可以原封不動的去使用這些模塊,在這基礎上做開發,甚至可以完全創建屬於你自己的新模塊。
調研
通過科學且明確的設置問題和答案,在用戶使用界面預定義好的調研模塊可以讓你快速的建立起一次調研。調研模型是已經確定化了的,所以你所需要做的一切事情只是明確你的問題。想知道更多與調研相關的知識,請參見創建調查。
授權
研究中的參與者常常不得不被要求說出一些與他們所參與的研究相關的敏感信息。所以完全明確什麼使用者信息要被收集以及誰會接觸到他們的信息是至關重要的。 ResearchKit 框架提供了模板,你可以參考這個模板去修改你自己的,以此來解釋你研究的細節同時獲取研究參與者的授權。想知道更多有關授權的知識,請參閱創建授權文檔。
活動任務
一些研究也許會需要有調查問題所提供的數據或者 iOS 中的 HealthKit 和 CoreMotion 這樣的 API 收集的數據。活動任務邀請使用者在部分受控的情況下來使用 iPhone 上的傳感器來動態的收集數據。想了解更多的與活動任務相關的知識,請參閱活動任務。
任務與步驟
ResearchKit 框架中的任務可以是一系列被安排好的行動序列,也可以是是動態的,也就是之前的結果會影響現在顯示的步驟。視圖控制器支持在一個很長的任務中保存每一步的結果,同時支持稍後重新儲存數據,與 UI 顯示狀態一並重新存儲。這是為了防止使用者在用任務進行中退出了你的應用。
無論你的應用是否給出指導,展示調查表,包含授權,亦或運行活動任務,ResearchKit 中所有東西都是一系列步驟的集合 (ORKStep 對象),這是從任務中匯聚而來的(一個 ORKTask 對象)。 為了展示任務,需要將任務依附到任務視圖控制器對象上 (ORKTaskViewController)。當使用者完成了任務中規定的步驟的時候,任務的視圖控制器會生成一個記錄了步驟開始和結束時間的以及步驟中所有結果的步驟結果對象 (ORKStepResult)。
在一個簡單的應用中,你可有創建你的直接用代碼創建你的任務,收集結果同時將之序列化之後存入硬盤以便之後人工的去收集,分析。一次大規模的部署也行會動態的從服務器上下載預定義的調查,同時將其解序列化來生成 ResearchKit 對象層級。與之前一樣,任務結果可以被序列化同時上傳到服務器以便之後的分析。
目前的限制
ResearchKit 框架的特性表將始終不斷的增長,如同開源社區貢獻的很有用的模塊一樣。記住 ResearchKit 框架目前沒有包含這些功能:
背景傳感器數據收集。諸如iOS 中的 HealthKit 和 CoreMotion 這樣的 API 們已經可以實現這樣的功能了。
你的應用和服務器之間安全的通信機制,你需要自己去提供這個。
為你的參與者規劃調查和活動任務。
可以被 ResearchKit 框架使用來構建數據的數據的定義好的數據格式必須是序列化的。所有 ResearchKit 框架對象都遵從 NSSecureCoding 協議,示范代碼的結果在離開框架之後將被序列化成 JSON 。
你對你應用內所有適用於法律的內容都有法律責任。
日志記錄上的錯誤和警告
ResearchKit 框架支持4種日志級別,由四種預處理宏指令以及他們對應的 NSLog()-like 日志宏指令:
ORK_LOG_LEVEL_NONE ORK_LOG_LEVEL_DEBUG,ORK_Log_Debug() ORK_LOG_LEVEL_WARNING,ORK_Log_Warning() ORK_LOG_LEVEL_ERROR,ORK_Log_Error()
設置 ResearchKit 框架的 ORK_LOG_LEVEL_NONE 宏指令為 1 會完全讓所有 ResearchKit的日志沉默,優先於其他任何特定的日志級別。設置 ORK_LOG_LEVEL_DEBUG, ORK_LOG_LEVEL_WARNING, 或者 ORK_LOG_LEVEL_ERROR 為 1 則會在那個等級或者更高的等級開啟日志。
如果你不明確的設置日志等級, ORK_LOG_LEVEL_WARNING=1 被當做默認值使用。
你必須在你的 ResearchKit 子項目中設置你預處理宏指令,而不是在你的主任務中。在 Xcode 中,你可以通過設置在 ResearchKit 框架目標的 Build Settings 表中 預處理宏指令 的任何一個選項。
如果你在通過 Cocoapods 使用 ResearchKit 同時你需要去修改日志級別請參閱如下資源:
stackoverflow
CocoaPods and custom Build Configurations