iOS5 cmmotionmanager startdevicemotionupdatestoqueque: fallisce su iphone3gs
-
12-11-2019 - |
Domanda
Ho un problema relativo al software-hardware che sto cercando di risolvere i problemi. La mia app è stata sviluppata per iPhone4, iOS5 e utilizza il quadro di movimento principale per elaborare gli accelerometro e i dati del giroscopio in tempo reale. L'app fallisce quando si esegue su iPhone 3GS con iOS5
Il mio principale metodo Core-Motion è simile a questo:
[motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) {
//notify calibration delegate
if(calibrationDelegate)
{
[calibrationDelegate collectCalibrationMotionData:motion];
}
//a lot more processing
}
.
Ho rapporti che iPhones3GS non restituisce Sì a Isgyrovailable, mentre iPhone4 ritorna Sì.
BOOL accelerometerAvailable = (motionManager.isAccelerometerAvailable)?YES:NO;
BOOL gyroscopeAvailable = (motionManager.isGyroAvailable)?YES:NO;
if(!accelerometerAvailable && ! gyroscopeAvailable)
{
//handle error
remoteControlState = kRemoteControlStateError;
}
.
Ho scoperto dolorosamente che Apple vende la mia app ai clienti con iPhone4, 4S e 3GS. L'app non funziona per i clienti con iPhone 3GS perché la chiamata sopra non sembra passare il movimento oggetti al delegato di calibrazione.
Non ho iPhone 3GS per testare l'app, quindi ho alcune domande:
- .
-
è possibile specificare ovunque nelle proprietà del progetto Xcode che voglio che la mia app funzioni solo su iPhone4 e sopra? (o dispositivi con giroscopio disponibile?)
Dove posso trovare maggiori informazioni su IOS5 Quirks come quello sopra Per capire meglio come iPhonex3GS differisce da iPhone4?
Soluzione
.È possibile specificare ovunque nelle proprietà del progetto Xcode che voglio che la mia app funzioni solo su iPhone4 e sopra?(o dispositivi con giroscopio disponibili?)
Sì, specificare tali dipendenze nel
UIRequiredDeviceCapabilities
chiave della tua info.plist (gyroscope
sarebbe il requisito in questo caso).Tuttavia, per un'app rilasciata, purtroppo è Impossibile per aggiungere nuovi requisiti.