У меня проблема с программным и аппаратным обеспечением, которую я пытаюсь устранить. Мое приложение было разработано для iPhone4, iOS5 и использует платформу Core Motion для обработки данных акселерометра и гироскопа в режиме реального времени. Сбой приложения при работе на iPhone 3GS с iOS5
Мой основной метод движения ядра выглядит так:
[motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) {
//notify calibration delegate
if(calibrationDelegate)
{
[calibrationDelegate collectCalibrationMotionData:motion];
}
//a lot more processing
}
У меня есть сообщения, что iPhone3GS не возвращает yes в isGyroAvailable, в то время как iPhone4 возвращает yes.
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?