繁体   English   中英

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

[英]Keep accelerometer running when for app to background 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中,只允许在后台运行特定的应用类型:

  1. 在后台播放用户可听内容的应用,例如音乐播放器应用

  2. 随时向用户通知其位置的应用,例如导航应用

  3. 支持互联网协议语音(VoIP)的应用

  4. 需要下载和处理新内容的报亭应用程序

  5. 从外部配件接收定期更新的应用程序

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM