Pergunta

Tenho um problema relacionado a software e hardware que estou tentando solucionar.Meu aplicativo foi desenvolvido para iPhone4, iOS5 e usa a estrutura Core Motion para processar dados de acelerômetro e giroscópio em tempo real.O aplicativo falha ao ser executado no iPhone 3GS com iOS5

Meu principal método de movimento central é assim:

        [motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) {

            //notify calibration delegate
            if(calibrationDelegate)
            {
                [calibrationDelegate collectCalibrationMotionData:motion];
            }
//a lot more processing

}

Tenho relatos de que o iPhone3GS não retorna sim para isGyroAvailable, enquanto o iPhone4 retorna sim.

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

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

        }

Descobri dolorosamente que a Apple vende meu aplicativo para clientes com iPhone4, 4s E 3GS. O aplicativo não funciona para clientes com iPhone 3GS porque a chamada acima não parece passar os objetos em movimento para o delegado de calibração.

Não tenho iPhone 3GS para testar o aplicativo, então tenho algumas dúvidas:

  • É possível especificar em qualquer lugar nas propriedades do projeto Xcode que eu queira que meu aplicativo seja executado apenas no iPhone4 e acima? (ou dispositivos com giroscópio disponíveis?)

    Onde posso encontrar mais informações sobre as peculiaridades do iOS5, como a acima, para entender melhor como o iPhone3Gs difere do iPhone4?

Foi útil?

Solução

É possível especificar em qualquer lugar nas propriedades do projeto XCode que desejo que meu aplicativo seja executado SOMENTE no iPhone4 e superior?(ou dispositivos com giroscópio disponíveis?)

Sim, você especificaria tais dependências no UIRequiredDeviceCapabilities chave do seu Info.plist (gyroscope seria o requisito neste caso).

No entanto, para um aplicativo lançado, infelizmente impossível para adicionar novos requisitos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top