Проблемы авторизации CoreMotion


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

Моя проблема заключается в том, что при инициализации 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!
            }
        }

}

Смущает то, что эта функция также была протестирована на другом приложении bare-bones и работает правильно (т. е. появится диалоговое окно разрешить "движение и фитнес"), на тех же устройствах. Все соответствующие системные настройки настроены должным образом, и другие приложения Шагомерcm будут работать.

Итак, проблема заключается в том, что что-то в моем приложении мешает отображению диалогового окна авторизации CoreMotion. Есть ли какие-либо известные "готы" или проблемы, связанные с работой с CoreMotion и разрешение?

2 3

2 ответа:

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

Главное, что я могу придумать, - это убедиться,что вы держите ссылку на свой объект CMPedometer. Если вы этого не сделаете, то метод queryPedometerDataFromDate не будет вызван, что означает, что он, вероятно, не будет показывать диалоговое окно авторизации, которое вы ищете.