HealthKit 是一个框架,允许提供健康和健身服务的 iOS 应用分享数据。用户的健康信息存储在集中式和安全的位置,每个用户决定哪些数据应该对你的应用可用。如果你的 iOS 应用旨在提供此类服务,那么最好的方法是使用 *HealthKit*。
根据这篇博文,有一个 使用 HealthKit 的开源示例 NativeScript 应用 可用。
注意: 本文假设你已经拥有一个添加了 iOS 平台的 NativeScript 项目。你可以在这里查看如何创建 NativeScript 应用:此处.
首先,你需要在你的项目中开启 HealthKit API。为此,打开位于 <MyProject>/platforms/ios 文件夹中的 .xcodeproj 文件。然后,你可以按照 添加功能 文章中描述的步骤进行操作。
一旦你启用了 *HealthKit*,你就可以像在 ObjC 中一样使用它。HealthKit Store 充当连接你到 *HealthKit* 管理的所有数据的桥梁。使用 HealthKit Store 请求权限来分享或读取 *HealthKit* 数据。一旦获得授权,你就可以使用 *HealthKit* Store 将新的样本保存到 Store 中,或者管理你的应用保存的样本。此外,你还可以使用 *HealthKit* Store 启动、停止和管理查询。
你可以使用以下代码创建一个 *HKHealthStore* 实例
var
healthStore = HKHealthStore.
new
();
要访问数据,你需要从用户那里请求权限。以下代码演示了如何执行此操作
// 创建数量类型。
var
weightType = HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMass);
// 选择要写入的数量类型
var
writeDataTypes = NSSet.setWithArray([weightType]);
// 选择要读取的数量类型
var
readDataTypes = NSSet.setWithArray([weightType]);
healthStore.requestAuthorizationToShareTypesReadTypesCompletion(writeDataTypes, readDataTypes, (success, error) {
…
}
一旦用户授权你的应用,你就可以自由地访问请求的数据。为此,你可以使用查询。以下示例展示了如何执行查询以获取用户的最新体重:
// 创建排序描述符
var
endDateSortDescriptor = NSSortDescriptor.alloc().initWithKeyAscending(HKSampleSortIdentifierEndDate,
false
);
// 创建查询
var
query = HKSampleQuery.alloc().initWithSampleTypePredicateLimitSortDescriptorsResultsHandler(weightType,
null
, 1, [endDateSortDescriptor], (query, results, error) => {
…
}
// 执行查询
healthStore.executeQuery(query);
将数据写入 *HealthKit* Store 更加容易
// 创建体重
var
weight = HKQuantity.quantityWithUnitDoubleValue(HKUnit.poundUnit(), 83);
var
now = NSDate.
new
();
var
sample = HKQuantitySample.quantitySampleWithTypeQuantityStartDateEndDate(weightType, weight, now, now);
// 保存体重
healthStore.saveObjectWithCompletion(sample,(success, error) => void {
});
这就是如何在 NativeScript 中使用 *HealthKit* API。是的,就这么简单。
要查看完整的代码应用,请访问 NativeScript 框架开源仓库。请在下面的评论中告诉我们你的想法,或者直接关注 @NativeScript on twitter。我们乐于接受想法,创建类似的项目来帮助你探索 {N} 的可能性。