当应用程序处于非活动状态时可以接收 UIAccelerometer 更新吗?

Posted

技术标签:

【中文标题】当应用程序处于非活动状态时可以接收 UIAccelerometer 更新吗?【英文标题】:Possible to receive UIAccelerometer updates when app is inactive? 【发布时间】:2009-12-07 14:56:41 【问题描述】:

当我的 iPhone 应用退出活动状态时,UIAccelerometer 的 sharedAccelerometer 单例实例停止向我的委托发送 accelerometer:didAccelerate: 消息。

是否有可能继续接收这些消息,类似于 CLLocationManagerDelegate 在应用处于非活动状态时如何继续接收更新?

如果有帮助的话,我宁愿不必完全禁用 idleTimer。

【问题讨论】:

【参考方案1】:

不,至少不是最新可用的 iPhone SDK 形式。

【讨论】:

【参考方案2】:

我会说这是可能的,因为 this app 在 AppStore 上:

但是,由于您的移动方式不同 在不同阶段的床上, 睡眠周期闹钟可以使用 iPhone 中的加速度计 监控您的运动并确定 你处于哪个睡眠阶段。

我不敢相信它必须在屏幕打开的情况下运行一整夜。 编辑: 看起来必须这样做! :P


所以他们也没有解决这个问题。那你做不到的机会就更多了……

您是否阅读过UIAccelerometer 的文档,其中是否提到了任何内容?如果它只是停止发送加速事件,那么您无能为力。

但是,当我的应用失去焦点(手机被锁定时)时,我会尝试再次将加速度计委托设置给我的班级。您可以从 UIApplication 获取该通知(失去焦点通知)。尝试这样做,以防应用失去焦点时加速度计的委托设置为 nil

【讨论】:

感谢您为我指明这个应用程序的方向。我下载了它并且可以确认:1)该应用程序必须整夜保持活动状态,2)您无法锁定手机,3)您被指示将手机正面朝下放在床上,4)您被指示保持手机手机连接到充电器。从本质上讲,该应用程序似乎禁用了 idleTimer 并使屏幕整夜保持活动状态。只要屏幕朝下并且手机正在充电,这不是一个大问题,但对于我的应用程序来说,充电器不太可能存在。 那么,恐怕你不能做你想做的,但你可以尝试最后一件事。看看我更新的答案,祝你好运:)

以上是关于当应用程序处于非活动状态时可以接收 UIAccelerometer 更新吗?的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序的状态不活动时是不是可以获得本地通知

Ios:当应用程序处于非活动状态时,如何让我的应用程序返回根视图

当应用程序处于非活动状态时,GCM 推送通知不适用于 iOS

activex 如何调用OnDraw函数

如何在应用程序处于非活动状态时获取推送通知ios swift3

当应用程序处于非活动状态并运行代码时,Swift iOS 应用程序会收到推送通知