天天看點

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);

    hkbloodtypeobject *blood = [_healthstore bloodtypewitherror:&error];

        nslog(@"血型=%@", @(blood.bloodtype));

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

    hkfitzpatrickskintypeobject *fitz = [_healthstore fitzpatrickskintypewitherror:&error];

        nslog(@"日光反應型皮膚類型=%@", @(fitz.skintype));

        nslog(@"日光反應型皮膚類型error=%@",error);

繼續閱讀