В настоящее время я пытаюсь разработать приложение для iOS, которое извлекает данные магнитометра из CMMotionManager. Я создал очень простое тестовое приложение, но даже оно не работает на моем iPhone 5. Код выглядит следующим образом:
- (void)viewDidLoad
{
[super viewDidLoad];
CMMotionManager *motionManager = [[CMMotionManager alloc] init];
[motionManager setMagnetometerUpdateInterval:1.0/30.0f];
[motionManager startMagnetometerUpdatesToQueue:[[NSOperationQueue alloc] init]
withHandler:^(CMMagnetometerData *magnetometerData, NSError *error) {
NSLog(@"eek");
}];
}
Проблема в том, что обработчик просто никогда не вызывается. Аналогично, вызов [motionManager startMagnetometerUpdates]
, а затем опрос magnetometerData
не работает (возвращает nil). При выполнении [motionManager isMagnetometerActive]
результатом всегда будет false
.
Я застрял здесь, есть идеи? Я не понимаю, почему код не должен работать. Должен ли я каким-либо образом сначала запрашивать доступ к компасу? В документации CMMotionManager ничего не упоминается, кроме того, что я сделал.
magnetometerAvailable
, чтобы вы могли обрабатывать сценарии, в которых он недоступен. - person Rob   schedule 05.12.2013