I want to check if Heathkit was allowed for me to read user data, if I am an authorized SEGUE for training, if I do not pop a warning. But does requestAuthorizationToShareTypes always seem to return true? How can I get a link to whether the user allowed me or not?
override func viewDidLoad() { super.viewDidLoad() //1. Set the types you want to read from HK Store let healthKitTypesToRead: [AnyObject?] = [ HKObjectType.workoutType() ] //2. If the store is not available (for instance, iPad) return an error and don't go on. if !HKHealthStore.isHealthDataAvailable() { let error = NSError(domain: "com.myndarc.myrunz", code: 2, userInfo: [NSLocalizedDescriptionKey: "HealthKit is not available in this Device"]) print(error) let alertController = UIAlertController(title: "HealthKit Not Available", message: "It doesn't look like HealthKit is available on your device.", preferredStyle: .Alert) presentViewController(alertController, animated: true, completion: nil) let ok = UIAlertAction(title: "Ok", style: .Default, handler: { (action) -> Void in }) alertController.addAction(ok) } //3. Request Healthkit Authorization let sampleTypes = Set(healthKitTypesToRead.flatMap { $0 as? HKSampleType }) healthKitStore.requestAuthorizationToShareTypes(sampleTypes, readTypes: nil) { (success, error) -> Void in if success { dispatch_async(dispatch_get_main_queue(), { () -> Void in self.performSegueWithIdentifier("segueToWorkouts", sender: nil) }); } else { print(error) dispatch_async(dispatch_get_main_queue(), { () -> Void in self.showHKAuthRequestAlert() }); } } }
As an alternative, I tried the authorization of StatususType and included its enumeration values, but had the same problem as I was always resolving.
ios swift health-kit
Garysabo
source share