填充iOS Health Section中的正念部分

时间:2016-08-11 13:45:34

标签: ios health-kit

我发现Health应用程序有一个正念部分,但我没有在文档中找到如何为该部分做出贡献。为此要求编制网络搜索让我回到了全世界的撤退中心......你能指导我做一些有意义的事吗?

3 个答案:

答案 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中添加隐私选项

这就是这样的事   隐私 - 健康分享使用说明
  隐私 - 健康更新使用说明

Xcode info 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

  

用于记录有意识的会话的类别样本类型。

Apple docs.

这只是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(或更低版本)上要求此权限,则应用会崩溃。