当应用程序到后台IOS时,保持加速度计运行

我在 IOS中使用加速度计,我希望它以后台模式运行.

我尝试使用像这样的CMMotionManager,但它不起作用:

CMMotionManager*manager= [[CMMotionManager alloc] init];
if(!manager.accelerometerAvailable) {
    NSLog(@"Accelerometer not available");
} else {
    manager.accelerometerUpdateInterval = 0.1;
    NSOperationQueue *motionQueue = [[NSOperationQueue alloc] init];

    [manager startAccelerometerUpdatesToQueue: motionQueue withHandler:
     ^(CMAccelerometerData *data,NSError *error) {
         NSLog(@"Accelerometer data: %@",[data description]);
     }
     ];
}

我怎样才能做到这一点?

解决方法

不确定这会解决您的问题,但只需浏览文档( http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html)即可:

“实施长期运行的后台任务

对于需要执行更多执行时间的任务,您必须请求特定权限才能在后台运行它们而不会被挂起.在iOS中,只允许在后台运行特定的应用类型:

>在后台播放用户可听内容的应用,例如音乐播放器应用
>随时向用户通知其位置信息的应用程序,例如导航应用程序
>支持互联网协议语音(VoIP)的应用
>需要下载和处理新内容的报亭应用程序
>从外部配件接收定期更新的应用程序

实现这些服务的应用程序必须声明它们支持的服务,并使用系统框架来实现这些服务的相关方面.声明服务可以让系统知道您使用哪些服务,但在某些情况下,系统框架实际上会阻止您的应用程序被暂停.“

不确定你是否正在尝试使用加速度计来做这些事情(或许可以与蓝牙设备通信?),但如果是这样,你需要在应用程序中声明你支持的服务.为此,您需要将UIBackgroundModes键添加到Info.plist中,然后添加一个包含您尝试使用的服务的相关字符串的数组.有关字符串的完整列表,请参阅上面链接的文档页面.

如果你没有尝试使用加速计做任何这些事情,看起来好像你可能运气不好.虽然我喜欢那里错了..(有人吗?)

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...