2016-01-17 3 views
3

В настоящее время я разрабатываю приложение, которое будет использовать комбинацию из трех библиотек: CoreLocation, CoreMotion и Healthkit.Проблемы с авторизацией CoreMotion

Моя проблема в том, что когда я инициализирую CoreLocation и Healthkit, я получаю диалог, разрешающий авторизацию. Однако, с CoreMotion, я не получаю никакого диалога с запросом авторизации, просто ошибка «CMErrorDomain = 105» (то есть доступ запрещен). Настройки конфиденциальности для «Motion & Fitness» не отображаются для входа в приложение. Также настройки конфиденциальности для приложения не показывают запись, связанную с движением. Я несколько раз удалил свое тестовое устройство, чтобы устранить любые ранее существовавшие настройки.

Приложение построено для ios 9.2 с использованием Swift 2.1. Протестировано на 5S и 6S + с идентичными результатами (нет диалогового окна авторизации)

Вот код, используемый для проверки доступности шагомера и возможности сбора данных (т.е. разрешено). «Шагомер» объявляется в классе. Эта функция (в настоящее время) прикреплена к кнопке, которая запускается пользователем.

func checkCM() { 
     pedometer.queryPedometerDataFromDate(NSDate(), toDate: NSDate()) { 
      (data, error) -> Void in 
      if error != nil { 
       //error handler 
       print(error?.description) 

      } else { 
       // no errors! 
      } 
     } 

} 

Запутанная часть является то, что эта функция также была протестирована на другом приложении минималистичных, и работает правильно (то есть. Диалоговое окно, чтобы «Motion & Fitness» отображается), на один и те же устройства. Все соответствующие системные настройки настроены так, как ожидалось, и другие приложения для шагомера \ см.

Так что проблемы в том, что что-то в моем приложении препятствует отображению диалогового окна авторизации CoreMotion. Существуют ли какие-либо известные «gotchas» или проблемы, связанные с работой с CoreMotion и авторизацией?

ответ

0

У меня была эта проблема в течение недели. Даже во время первого запуска приложения диалог не показывался ... С этой ошибкой 105. Для меня это было связано с моим info.plist, который как-то удаляет имя моего приложения. Поэтому убедитесь, что у вас есть правильное имя в этом;)

1

Основная «гоча», о которой я могу думать, заключается в том, чтобы убедиться, что вы храните ссылку на свой объект CMPedometer. Если вы этого не сделаете, метод queryPedometerDataFromDate не будет вызван, что означает, что он, вероятно, не отобразит диалоговое окно авторизации, которое вы ищете.