2016-11-24 7 views
4

В моем продлении часов я называю эту функцию:HealthKit Разрешение Листовая Не Появившись

func requestAuthorization() { 
     let healthStore = HKHealthStore() 
     let workoutType = HKObjectType.workoutType() 
     let heartRateType = HKObjectType.quantityType(forIdentifier: .heartRate) 

     //reading 
     let readingTypes = Set([heartRateType!, workoutType]) 

     //writing 
     let writingTypes = Set([heartRateType!, workoutType]) 

     //auth request 
     healthStore.requestAuthorization(toShare: writingTypes, read: readingTypes) { (success, error) -> Void in 

      if error != nil { 
       print("error \(error?.localizedDescription)") 
      } else if success { 
       self.startButton.setEnabled(true) 
      } else if !success { 
       self.startButton.setEnabled(false) 
      } 
     } 
    } 

И в AppDelegate.swift, у меня есть:

func applicationShouldRequestHealthAuthorization(_ application: UIApplication) { 
     let healthStore = HKHealthStore() 
     healthStore.handleAuthorizationForExtension { (success, error) -> Void in 
      //... 
     } 
    } 

Я получаю диалог на часы и телефон и он открывает приложение на телефоне, когда я расскажу об этом в диалоговом окне. Проблема, с которой я сталкиваюсь, заключается в том, что в телефонном приложении не отображается панель разрешений, которая должна отображаться, чтобы разрешать разрешения. Лист разрешения упоминается здесь: https://developer.apple.com/reference/healthkit

Что нужно сделать, чтобы оно появилось, чтобы разрешить разрешение? Поскольку это прямо сейчас, я могу предоставить разрешения, перейдя в приложение «Здоровье», затем из источников и выбрав свое приложение и предоставив разрешения таким образом.

Лист разрешений, о котором я говорю, это. enter image description here

EDIT: Я получаю эту ошибку, напечатанную по вызову метода requestAuthorization().

error Optional("Required usage description strings not present in app\'s Info.plist") 
+0

Как только вы отказались от авторизации, вы можете открыть это только в настройках. Или переустановите приложение. – Lumialxk

+0

Я никогда не отказывался от разрешения. Я попытался переустановить приложение, и я до сих пор не получил лист разрешений. – raginggoat

+0

Какую версию iOS вы используете? – Mehul

ответ

0

С этим TestHealthKit, я был в состоянии открыть разрешение листа медицинского комплекта.

 // 4. Request HealthKit authorization 
    (HealthStore as! HKHealthStore).requestAuthorizationToShareTypes(nil, readTypes: dataTypesToRead()) { (success, error) -> Void in 

     //   self.CheckAuthorizationStatusFor(self.dataTypesToRead()) 
     if (success) 
     { 

      SuccessCompletion(success: success) 
      return; 
     } 
     else 
     { 

      FailureCompletion(err: error) 
      return; 
     } 

    } 

Кроме того, проверьте, разрешено ли вам разрешение, как показано. entitlements.

+0

Именно это я и имею право. Все в моем приложении работает, если я перейду в приложение Apple Health и предоставил разрешения для своего приложения. Буквально единственная проблема, с которой я сталкиваюсь, - это не видеть лист разрешений, когда приложение-приложение запрашивает разрешение с телефона, и когда я выбираю, чтобы открыть приложение из предупреждения на телефоне, оно открывает мое приложение, но я не вижу разрешения лист. – raginggoat