У меня есть проблема с программным обеспечением, связанная со сбоями, которую я пытаюсь устранить. Мое приложение было разработано для iPhone4, iOS5 и использует платформу Core Motion для обработки данных акселерометра и гироскопа в реальном времени. Приложение терпит неудачу, когда работает на iPhone 3GS с iOS5iOS5 CMMotionManager startDeviceMotionUpdatesToQueue: fail на iPhone3GS
Мой основной метод ядро-движения выглядит следующим образом:
[motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) {
//notify calibration delegate
if(calibrationDelegate)
{
[calibrationDelegate collectCalibrationMotionData:motion];
}
//a lot more processing
}
У меня есть сообщения о том, iPhone3GS ли да не возвращаться в isGyroAvailable, в то время как iPhone4 возвращается да.
BOOL accelerometerAvailable = (motionManager.isAccelerometerAvailable)?YES:NO;
BOOL gyroscopeAvailable = (motionManager.isGyroAvailable)?YES:NO;
if(!accelerometerAvailable && ! gyroscopeAvailable)
{
//handle error
remoteControlState = kRemoteControlStateError;
}
Я болезненно обнаружил, что компания Apple продает свое приложение для клиентов с iPhone4, 4S и 3GS. Приложение не работает для клиентов с iPhone 3GS, потому что вызов выше, похоже, не передает объекты движения делегату калибровки.
У меня нет iPhone 3GS, чтобы протестировать приложение на, поэтому у меня есть несколько вопросов:
Можно ли указать где-нибудь в свойствах XCode проекта , что я хочу, чтобы мое приложение, чтобы запустить ТОЛЬКО на iPhone4 и выше? (или устройства с гироскопом в наличии?)
Где я могу найти более подробную информацию о iOS5 причуды, как один выше , чтобы лучше понять, как iPhone3GS отличается от iPhone4?