Я работаю над приложением iOS, в котором я использую Motion Activity Manager (более подробно - шагомер). Когда запускается приложение, мне нужно проверить, разрешено ли действие движения. Я делаю это делаетiPhone - запрашивающий Motion activity
_motionActivityManager = [[CMMotionActivityManager alloc] init];
_pedometer = [[CMPedometer alloc] init];
[_pedometer queryPedometerDataFromDate : [NSDate date]
toDate : [NSDate date]
withHandler : ^(CMPedometerData *pedometerData, NSError *error) {
// BP1
if (error != nil) {
// BP2
}
else {
// BP3
}
}];
Как обсуждалось здесь ☛ iOS - is Motion Activity Enabled in Settings > Privacy > Motion Activity
В моем понимании этот код вызовет «окно предупреждения» с просьбой пользователю выбрать в/из.
Что происходит в моем случае является то, что при запуске приложения первый раз (ака. Все предупреждения сбрасываются), приложение зависает перед «ВР1» (обратный вызов никогда не выполняется), а затем, если я перестану приложение с Xcode или нажмите появляется кнопка «предупреждение». И если я выбираю все хорошо, на втором запуске «BP3» будет достигнуто (или «BP2», если я откажусь).
То, что я пытался сделать далеко:
Я реализовал еще один способ проверки с помощью выполнения асинхронной
[_pedometer queryPedometerDataFromDate : [NSDate date] toDate : [NSDate date] withHandler : ^(CMPedometerData *pedometerData, NSError *error) { // Because CMPedometer dispatches to an arbitrary queue, it's very important // to dispatch any handler block that modifies the UI back to the main queue. dispatch_async(dispatch_get_main_queue(), ^{ authorizationCheckCompletedHandler(!error || error.code != CMErrorMotionActivityNotAuthorized); }); }];
Это не висит приложение, но «окно предупреждения» является никогда не показывался
- Я выполнил эту проверку «snipp» et "в более позднее время в коде, но опять же - приложение зависает
Был ли трюк - так нижняя строка - ** сделать берег, что представление загружено, прежде чем проверка называется ** – ajitam