iOS5 CMMotionManager startDeviceMotionUpdatesToQueue:在 iPhone3GS 上失败
-
12-11-2019 - |
题
我有一个与软件硬件相关的问题,正在尝试解决。我的应用程序是为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 Project属性中的任何地方指定我的应用程序仅在iPhone4及更高版本上运行的任何地方? (或者有陀螺仪的设备可用吗?)
在哪里可以找到有关上述iOS5怪癖的更多信息,以更好地了解iPhone3GS与iPhone4的不同?
解决方案
是否可以在 XCode 项目属性中的任何位置指定我希望我的应用程序仅在 iPhone4 及更高版本上运行?(或者有陀螺仪的设备可用吗?)
是的,您可以在 UIRequiredDeviceCapabilities
Info.plist 的键 (gyroscope
在这种情况下将是要求)。
然而,对于一个已发布的应用程序来说,不幸的是 不可能的 添加新的要求。
不隶属于 StackOverflow