iOS5 CMMotionManager startDeviceMotionUpdatesToQueue:не работает на iPhone3GS

StackOverflow https://stackoverflow.com/questions/8976364

Вопрос

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

 BOOL accelerometerAvailable  =  (motionManager.isAccelerometerAvailable)?YES:NO;
 BOOL gyroscopeAvailable      =  (motionManager.isGyroAvailable)?YES:NO;

        if(!accelerometerAvailable && ! gyroscopeAvailable)
        {
//handle error
            remoteControlState = kRemoteControlStateError;

        }

Я с болью обнаружил, что Apple продает мое приложение клиентам с iPhone 4, 4s И 3GS. Приложение не работает для клиентов с iPhone 3GS, поскольку приведенный выше вызов не передает движущиеся объекты делегату калибровки.

У меня нет iPhone 3GS для тестирования приложения, поэтому у меня есть несколько вопросов:

  • Можно ли указать в любом месте в свойствах проекта Xcode, которые я хочу, чтобы мое приложение работало только на iPhone4 и выше? (или есть устройства с гироскопом?)

    Где я могу найти больше информации о причудах iOS5, подобных вышеуказанным, чтобы лучше понять, как iPhone3GS отличается от iPhone4?

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top