HealthKit之实战读取本人消息

简介:

- (void)requestHealthAuthorization

{

    if (![HKHealthStore isHealthDataAvailable])

    {

        NSLog(@"设备不支持healthKit"); return;

    }

    _healthStore = [[HKHealthStore alloc] init];

    HKObjectType *type1 = [HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierBiologicalSex]; // 性别

    HKObjectType *type2 = [HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierBloodType];//血型

    HKObjectType *type3 = [HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierDateOfBirth];//出生日期

    HKObjectType *type4 = [HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierFitzpatrickSkinType];//日光反应型皮肤类型

    

    NSSet *set = [NSSet setWithObjects:type1, type2, type3, type4, nil]; // 读集合

   

    __weak typeof (&*self) weakSelf = self;

    [_healthStore requestAuthorizationToShareTypes:nil readTypes:set completion:^(BOOL success, NSError * _Nullable error) {

        if (success)

        {

            [weakSelf readHealthPersonInfo];

        } else

        {

            NSLog(@"healthkit不允许读写");

        }

    }];

}


//查询数据

- (void)readHealthPersonInfo

{

    if ([UIDevice currentDevice].systemVersion.floatValue >=9.0)

    {

        NSLog(@"\n\n");

        NSLog(@"数据从这天%@才能读到, [_healthStore earliestPermittedSampleDate]);

    }

    NSError *error = nil;

    NSDate *b = [_healthStore dateOfBirthWithError:&error];

    if (!error) NSLog(@"出生日期=%@", b);

    else NSLog(@"出生日期error=%@", error);

    

    error = nil;

    HKBiologicalSexObject *s = [_healthStore biologicalSexWithError:&error];

    if (!error) {

        NSLog(@"性别=%@", @(s.biologicalSex));

    } else {

        NSLog(@"性别error=%@",error);

    }

    

    error = nil;

    HKBloodTypeObject *blood = [_healthStore bloodTypeWithError:&error];

    if (!error) {

        NSLog(@"血型=%@", @(blood.bloodType));

    } else {

        NSLog(@"血型error=%@",error);

    }

    

    error = nil;

    HKFitzpatrickSkinTypeObject *fitz = [_healthStore fitzpatrickSkinTypeWithError:&error];

    if (!error) {

        NSLog(@"日光反应型皮肤类型=%@", @(fitz.skinType));

    } else {

        NSLog(@"日光反应型皮肤类型error=%@",error);

    }

}


目录
相关文章
|
存储 JavaScript 前端开发
Vuex基础使用存取值+异步&请求后台
Vuex基础使用存取值+异步&请求后台
122 0
|
2月前
|
Java
Java开发如何实现文件的移动,但是在移动结束后才进行读取?
【10月更文挑战第13天】Java开发如何实现文件的移动,但是在移动结束后才进行读取?
80 2
|
7月前
|
Java iOS开发
iOS的数据序列化(又称持久化)的两类使用方式
iOS的数据序列化(又称持久化)的两类使用方式
72 0
|
7月前
uni-app 81聊天类封装(十五)-读取会话功能
uni-app 81聊天类封装(十五)-读取会话功能
42 1
|
消息中间件 存储 中间件
消息流是指在计算机系统中,消息从一个地方传递到另一个地方的过程
消息流是指在计算机系统中,消息从一个地方传递到另一个地方的过程
90 1
|
7月前
|
自然语言处理 数据挖掘
2020微博热点数据简析,附完整数据文件下载!
2020微博热点数据简析,附完整数据文件下载!
|
缓存 Java 分布式数据库
[笔记]Windows核心编程《九》同步设备I/O和异步设备I/O
[笔记]Windows核心编程《九》同步设备I/O和异步设备I/O
121 0
|
前端开发
前端学习笔记202305学习笔记第二十五天-创建读取流2
前端学习笔记202305学习笔记第二十五天-创建读取流2
68 0
前端学习笔记202305学习笔记第二十五天-创建读取流2
|
前端开发
前端学习笔记202305学习笔记第二十五天-创建读取流3
前端学习笔记202305学习笔记第二十五天-创建读取流3
41 0
|
存储 网络协议 小程序
我的小工具,用C和python实现远程读卡器,远程读写消费卡片
我的小工具,用C和python实现远程读卡器,远程读写消费卡片
我的小工具,用C和python实现远程读卡器,远程读写消费卡片