수색…
건강 킷
목표 -C
먼저 Target->Capabilities
로 가서 HealthKit
활성화 HealthKit
. 이렇게하면 info.plist 항목이 설정됩니다.
NSObject
유형의 새 CocoaClass
만들기 내가 제공 한 파일 이름은 GSHealthKitManager
이고 헤더 파일은 아래와 같이 표시됩니다.
GSHealthKitManager.h
#import <Foundation/Foundation.h>
#import <HealthKit/HealthKit.h>
@interface GSHealthKitManager : NSObject
+ (GSHealthKitManager *)sharedManager;
- (void)requestAuthorization;
- (NSDate *)readBirthDate;
- (void)writeWeightSample:(double)weight;
- (NSString *)readGender;
@end
GSHealthKitManager.m
#import "GSHealthKitManager.h"
#import <HealthKit/HealthKit.h>
@interface GSHealthKitManager ()
@property (nonatomic, retain) HKHealthStore *healthStore;
@end
@implementation GSHealthKitManager
+ (GSHealthKitManager *)sharedManager {
static dispatch_once_t pred = 0;
static GSHealthKitManager *instance = nil;
dispatch_once(&pred, ^{
instance = [[GSHealthKitManager alloc] init];
instance.healthStore = [[HKHealthStore alloc] init];
});
return instance;
}
- (void)requestAuthorization {
if ([HKHealthStore isHealthDataAvailable] == NO) {
// If our device doesn't support HealthKit -> return.
return;
}
NSArray *readTypes = @[[HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierDateOfBirth],[HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierBiologicalSex]];
[self.healthStore requestAuthorizationToShareTypes:nil readTypes:[NSSet setWithArray:readTypes] completion:nil];
}
- (NSDate *)readBirthDate {
NSError *error;
NSDate *dateOfBirth = [self.healthStore dateOfBirthWithError:&error]; // Convenience method of HKHealthStore to get date of birth directly.
if (!dateOfBirth) {
NSLog(@"Either an error occured fetching the user's age information or none has been stored yet. In your app, try to handle this gracefully.");
}
return dateOfBirth;
}
- (NSString *)readGender
{
NSError *error;
HKBiologicalSexObject *gen=[self.healthStore biologicalSexWithError:&error];
if (gen.biologicalSex==HKBiologicalSexMale)
{
return(@"Male");
}
else if (gen.biologicalSex==HKBiologicalSexFemale)
{
return (@"Female");
}
else if (gen.biologicalSex==HKBiologicalSexOther)
{
return (@"Other");
}
else{
return (@"Not Set");
}
}
@end
ViewController에서 호출
- (IBAction)pressed:(id)sender {
[[GSHealthKitManager sharedManager] requestAuthorization];
NSDate *birthDate = [[GSHealthKitManager sharedManager] readBirthDate];
NSLog(@"birthdate %@", birthDate);
NSLog(@"gender 2131321 %@", [[GSHealthKitManager sharedManager] readGender]);
}
로그 출력
2016-10-13 14:41:39.568 random[778:26371] birthdate 1992-11-29 18:30:00 +0000
2016-10-13 14:41:39.570 random[778:26371] gender 2131321 Male
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow