Ich möchte überprüfen, ob HeathKit für mich autorisiert wurde, die Daten des Benutzers zu lesen, wenn ich autorisierte Übergänge zu den Workouts habe, wenn keine Warnung ausgegeben wird. Aber requestAuthorizationToShareTypes scheint immer wahr zu sein? Wie kann ich feststellen, ob der Benutzer mich autorisiert hat oder nicht?Überprüfen, ob HealthKit autorisiert wurde
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()
});
}
}
}
Alternativ Ich habe authorizationStatusForType versucht und schaltete seinen ENUM-Wert aber hatte das gleiche Problem, dass ich immer autorisiert.
das System nie gefragt, Sie über die Erlaubnis? –
nein es tut, aber selbst wenn Sie es nicht autorisieren, heißt der Erfolgsblock – GarySabo