2016-05-12 12 views
0

Ich habe HealthKit Framework in meine Anwendung integriert. Das HealthKit wird nur einmal von der Anwendung gestartet. Der folgende Code befindet sich in der Singleton-Klasse, die für HealthKit erstellt wurde.HealthKit startet nur einmal in Swift 2.0

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") 
        } 
       } 
      } 

Verfahren requestAuthorization wird für Button-Aktion von der Viewcontroller Aufruf

@IBAction func healthIntegrationButton(sender: UIButton) 
    { 
     HealthKitHandler.shared.requestAuthorization() 

    } 

Sobald ich die healthkit App entlassen, dann Aktion keine Aktion geschieht für die Schaltfläche. Wieder, wenn ich die Anwendung aus dem Simulator & löschte klicken Sie auf die Schaltfläche Health Kit App wird gestartet.

Könnte uns bitte jemand helfen, was im obigen Code falsch ist. Danke im Voraus.

Antwort

2

Wenn die Autorisierung bereits erteilt wurde, wird sie von der App nicht mehr angezeigt. Es wird nur den Success-Handler direkt aufrufen.

Ihre completion Handler in ändern:

self.healthStore.requestAuthorizationToShareTypes(healthKitTypesToWrite, readTypes: healthKitTypesToRead) { 
       (success, error) -> Void in 
       if success { 
        print("success!") 
       } 
       else { 
        print("error") 
       } 
      } 

und Sie sollten den Unterschied sehen.

+0

also, wenn ich annehme, ich möchte die App erneut starten, wie soll ich fortfahren – suji

+1

@suji Sie tun nichts falsch. Rufen Sie immer den Autorisierungscode auf, aber erwarten Sie nicht, dass er den Autorisierungsdialog für den Benutzer anzeigt. – Sulthan

+0

ok, danke für deine Antwort. – suji