Reputation: 1470
I have integrated HealthKit framework into my application. The HealthKit is launching only once from the application.The below Code is in the singleton class created for HealthKit.
func requestAuthorization()
{
if (HKHealthStore .isHealthDataAvailable() == false)
{
return
}
let healthKitTypesToRead : Set = [
HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierFitzpatrickSkinType)!,
HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierBiologicalSex)!,
HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierBloodType)!
]
let healthKitTypesToWrite : Set = [
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyFatPercentage)!,
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMassIndex)!,
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeight)!,
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMass)!,
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierLeanBodyMass)!
]
self.healthStore.requestAuthorizationToShareTypes(healthKitTypesToWrite, readTypes: healthKitTypesToRead) {
(success, error) -> Void in
if !success{
print("error")
}
}
}
The method requestAuthorization
is calling for button action from the viewcontroller,
@IBAction func healthIntegrationButton(sender: UIButton)
{
HealthKitHandler.shared.requestAuthorization()
}
Once I dismiss the healthkit app, then no action is happening for the button action. Again if I deleted the application from simulator & click the button healthkit app will launch.
Could anyone please help us what is wrong in the above code. Thanks in advance.
Upvotes: 0
Views: 136
Reputation: 130201
If the authorization has been already granted, the app won't show it again. It will just call the success handler directly.
Change your completion
handler into:
self.healthStore.requestAuthorizationToShareTypes(healthKitTypesToWrite, readTypes: healthKitTypesToRead) {
(success, error) -> Void in
if success {
print("success!")
}
else {
print("error")
}
}
and you should see the difference.
Upvotes: 2