2014-10-02 3 views
2

Im фактически пытается конвертировать образец кода Apple в быстрый.iOS8 сбой приложений на Xcode6.0.1 с помощью HealthKit

Я создал приложение и APPID для него в devcenter. Я проверил право на HealthKit (те, что для IAP & GC, выделены серым цветом и отмечены автоматически).

Когда профиль обеспечения, который я создаю для него, загружается в Xcode, и я перехожу к настройкам в Xcode и просматриваю профили подготовки моей учетной записи, я могу видеть имя профиля плюс срок годности, а затем есть некоторые значки для прав , Но профиль обеспечения я создал с HealthKit оленья кожа есть какие-либо значок для него, только 2 из них по умолчанию, это нормально:

xcode preferences

потому, что по какой-то причине приложение падает при запросе авторизации с этой ошибкой:

2014-10-02 12: 16: 13.241 SwimFit [549: 8824] - [__ NSCFConstantString _allowAuthorizationForSharingWithEntitlements:]: непризнанный селектор, отправленный в экземпляр 0x107dc1ce0 2014-10-02 12: 16: 13.251 SwimFit [549: 8824] ** * Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: '- [__ NSCFConstantString _allowAuthorizationForSharingWithEntitlements:] : Непризнанные селектор направлен например 0x107dc1ce0'

Если я пытаюсь запустить его на устройстве, я получаю это:

on device

Я создал:

  1. AppId для моего приложения
  2. Активировано, что AppID для HealthKit
  3. Создал профиль обеспечения для этого AppID
  4. Активированного HealthKit Возможность в Генеральном
  5. Я вижу entitlements.plist создаются с com.apple.developer.healthkit = да
  6. info.plist имеет значение healthkit для требуемых возможностей

только странная вещь, которую я сделал на этот раз, и я делал по-другому для других приложений, так это то, что когда я нажимал на сборку/запуск какой-то точки, я позволяю Xcode создавать AppID, и я получаю это от devcenter ... я не могу загрузить изображение, но в основном все мои предыдущие AppIDs названы после приложения. Этот, потому что его созданный xcode называется: Xcode iOS App ID com santiapps SwimFit, но его идентификатор пакета верен: com.santiapps.SwimFit. Так же есть профиль dev: профиль Provisioning Profile iOS: com.santiapps.SwimFit и его один в моих настройках сборки. Первоначально у меня был SwimFit, потому что это было имя приложения, поэтому Xcode создал для него автоматический AppID и ProvProfile для него. Затем я подумал, может быть, мне нужно создать appID и provprofile, поэтому я сделал это вручную и попытался назвать его SwimFit2. Оба дают ту же ошибку.

Что еще я могу пропустить?

Вот код:

//1. Add healthstore property 

    var healthStore: HKHealthStore? //error if not optionally unwrapped 
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
     //2. Ask for permissions 

     if (HKHealthStore.isHealthDataAvailable() == true) { 
      self.healthStore = HKHealthStore() //needs to be var for it to work? 
      var writeDataTypes = self.dataTypesToWrite() 
      var readDataTypes = self.dataTypesToRead() 
      self.healthStore!.requestAuthorizationToShareTypes(writeDataTypes, readTypes: readDataTypes, completion: { (success: Bool, error: NSError!) -> Void in 
       if (!success) { 
         NSLog("You didn't allow HealthKit to access these read/write data types. In your app, try to handle this error gracefully when a user decides not to provide access. The error was: %@. If you're using a simulator, try it on a device.", error) 
        return 
        } else { 
         NSLog("success") 
        } 
       // Handle success in your app here. 
       self.setupHealthStoreForTabBarControllers() 
      }) 
     } 
     return true 
    } 

Вот ссылка с захватом экрана: http://youtu.be/BBagkNTpfQA

ответ

4

вчера у меня был такой же крах. Проблема в том, что вы ввели неправильный тип данных (NSString) для типов данных в метод.

requestAuthorizationToShareTypes метод требует, чтобы передать набор HKBaseType объектов, в моем случае HKQuantityType объектов.

Таким образом, вместо:

[_healthStore requestAuthorizationToShareTypes:[NSSet setWithObject:HKQuantityTypeIdentifierBodyMassIndex] 
              readTypes:[NSSet setWithArray:inputDataTypes] 
              completion: 

Используйте этот один:

HKQuantityType* type = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMassIndex]; 
[_healthStore requestAuthorizationToShareTypes:[NSSet setWithObject:type] 
              readTypes:[NSSet setWithArray:inputDataTypes] 
              completion: 

 Смежные вопросы

  • Нет связанных вопросов^_^