我有一个与软件硬件相关的问题,正在尝试解决。我的应用程序是为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 在这种情况下将是要求)。

然而,对于一个已发布的应用程序来说,不幸的是 不可能的 添加新的要求。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top