iOS5 CMMotionManager startDeviceMotionUpdatesToQueue: не работает на iPhone3GS - PullRequest
0 голосов
/ 23 января 2012

У меня проблема с программным и аппаратным обеспечением, которую я пытаюсь устранить. Мое приложение было разработано для 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?

1 Ответ

3 голосов
/ 23 января 2012

Можно ли указать где-нибудь в свойствах проекта XCode, что мое приложение должно работать ТОЛЬКО на iPhone4 и выше? (или устройства с гироскопом в наличии?)

Да, вы должны указать такие зависимости в ключе UIRequiredDeviceCapabilities вашего Info.plist (в этом случае потребуется gyroscope).

Однако для выпущенного приложения, к сожалению, невозможно добавить новые требования.

...