我遇到了与软件硬件相关的问题,我正在尝试进行故障排除。我的应用程序是为iPhone4,iOS5开发的,并使用Core Motion框架实时处理加速度计和陀螺仪数据。在使用iOS5的iPhone 3GS上运行时,应用程序失败
我的主要核心动作方法如下:
[motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) {
//notify calibration delegate
if(calibrationDelegate)
{
[calibrationDelegate collectCalibrationMotionData:motion];
}
//a lot more processing
}
据我所知,iPhone3GS没有向isGyroAvailable返回yes,而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的区别?
答案 0 :(得分:3)
是否有可能在XCode项目属性中指定我希望我的应用程序仅在iPhone4及更高版本上运行? (或有陀螺仪的设备?)
是的,您可以在Info.plist的UIRequiredDeviceCapabilities
键中指定此类依赖项(在这种情况下,gyroscope
将是必需的。)
但是,对于已发布的应用,遗憾的是impossible会添加新要求。