我发现Health应用程序有一个正念部分,但我没有在文档中找到如何为该部分做出贡献。为此要求编制网络搜索让我回到了全世界的撤退中心......你能指导我做一些有意义的事吗?
答案 0 :(得分:5)
Swift 3.1,Xcode 8.2
以下是关于healthkit的注意事项的方法 但在整合之前,请记住以下几点: - 1 - 仅在ios 10及以后版本中可用 2 - 您需要获得用户访问这些数据的权限 3 - 这里我将展示如何根据问题需要填写健康工具包正念部分中的数据
首先取得用户许可
假设我们已经在按钮中实施了IBAction
//Taking permission from user
@IBAction func activateHealthKit(_ sender: Any) {
let typestoRead = Set([
HKObjectType.categoryType(forIdentifier: HKCategoryTypeIdentifier.mindfulSession)!
])
let typestoShare = Set([
HKObjectType.categoryType(forIdentifier: HKCategoryTypeIdentifier.mindfulSession)!
])
self.healthStore.requestAuthorization(toShare: typestoShare, read: typestoRead) { (success, error) -> Void in
if success == false {
print("solve this error\(error)")
NSLog(" Display not allowed")
}
if success == true {
print("dont worry everything is good\(success)")
NSLog(" Integrated SuccessFully")
}
}
}
别忘了在plist中添加隐私选项
这就是这样的事
隐私 - 健康分享使用说明
隐私 - 健康更新使用说明
然后将数据保存到健康工具包Mindfull部分
func saveMindfullAnalysis() {
// alarmTime and endTime are NSDate objects
if let mindfulType = HKObjectType.categoryType(forIdentifier: .mindfulSession) {
// we create our new object we want to push in Health app
let mindfullSample = HKCategorySample(type:mindfulType, value: 0, start: self.alarmTime, end: self.endTime)
// at the end, we save it
healthStore.save(mindfullSample, withCompletion: { (success, error) -> Void in
if error != nil {
// something happened
return
}
if success {
print("My new data was saved in HealthKit")
} else {
// something happened again
}
})
}
}
这里我采用了一个简单的计时器,表示用户开始分析时的用户冥想时间,然后在停止时将数据保存在健康工具包中。请保留部分
git hub上的完整项目链接,供初学者参考 - Download
希望它有用
答案 1 :(得分:2)
我找到了HKCategoryTypeIdentifierMindfulSession
。
用于记录有意识的会话的类别样本类型。
这只是iOS 10+。我认为他们为新的Breathe应用程序创建了这个,以跟踪您花费多少时间进行冥想。这很棒,如果你在这个领域建立冥想应用程序,你应该使用它。
答案 2 :(得分:0)
你可以这样在HealthKit上写一个Mindful Minutes会话:
创建健康商店:
HKHealthStore *healthStore = [[HKHealthStore alloc] init];
要求用户提供正确的权限:
NSArray *writeTypes = @[[HKSampleType categoryTypeForIdentifier:HKCategoryTypeIdentifierMindfulSession]];
[healthStore requestAuthorizationToShareTypes:[NSSet setWithArray:writeTypes] readTypes:nil completion:^(BOOL success, NSError * _Nullable error) {
//manage the success or failure case
}];
编写一个实际保存会话的函数:
-(void)writeMindfulSessionWithStartTime:(NSDate *)start andEndTime:(NSDate *)end{
HKCategoryType *mindfulType = [HKCategoryType categoryTypeForIdentifier:HKCategoryTypeIdentifierMindfulSession];
HKCategorySample* mindfulSample = [HKCategorySample categorySampleWithType:mindfulType value:0 startDate:start endDate:end];
[healthStore saveObject:mindfulSample withCompletion:^(BOOL success, NSError *error) {
if (!success) {
NSLog(@"Error while saving a mindful session: %@.", error);
}
}];
}
编辑:请注意:此功能仅适用于iOS 10.如果您在iOS 9(或更低版本)上要求此权限,则应用会崩溃。