2016-08-06 22 views
4

Ich verwende AppleHealthKit in meiner Anwendung. Alles funktioniert richtig. Das Problem ist, dass ich nicht in der Lage bin zu erkennen, ob der Benutzer "Do not Allow" Knopf drückt, wenn er um Erlaubnis bittet.Wie erkennen Sie, ob der Benutzer die Apple Health Kit-Autorisierung nicht zulässt?

enter image description here

Mit dieser Methode meine Anwendung verwendet HealthKit, auch wenn der Benutzer dies nicht zulässt.

requestAuthorizationToShareTypes(healthKitTypesToWrite, readTypes: healthKitTypesToRead) { (success, error) -> Void in 
     if(completion != nil) { 
      completion(success:success,error:error) 
     } 

Apple-Dokumentation:

enter image description here

Also im Grunde ist meine Frage, wie dies zu erkennen?

Antwort

5

Sie können nicht erkennen, durch Design:

mögliche Lecks von sensiblen Gesundheitsinformationen, Ihre App nicht bestimmen können, um zu verhindern, ob ein Benutzer über die Berechtigung zum Lesen von Daten erteilt hat. Wenn Sie keine Berechtigung erhalten, scheint es so, als ob im HealthKit-Speicher keine Daten des angeforderten Typs vorhanden sind.

(von HKHealthStore)

3

Yo können dies aber nur für einen bestimmten Typ und nur für Schreibdaten (u das gleiche auch mit einer anderen Art tun können, wenn u sie überprüfen)

HKHealthStore *_healthStore; 
HKQuantityType *stepsType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]; 

HKAuthorizationStatus status = [_healthStore authorizationStatusForType:stepsType]; 

BOOL isActive; 
switch (status) { 
    case HKAuthorizationStatusSharingAuthorized: 
     isActive = YES; 
     break; 
    case HKAuthorizationStatusSharingDenied: 
     isActive = NO; 
     break; 
    case HKAuthorizationStatusNotDetermined: 
     isActive = NO; 
     break; 

    default: 
     break; 
} 

NSLog(@"STATUS-------%@", isActive ? @"yes" : @"no");