iPhone应用程序在屏幕锁定时运行

8

这里有一件我正在拼命尝试让它工作的事情:

我有一个应用程序,在指定的间隔内轮询GPS模块,然后使用Unix调用(如write())将坐标发送到服务器。当应用程序处于活动状态时,它可以正常工作,但一旦屏幕锁定,报告就停止了。

我发现了这个:[UIApplication sharedApplication].idleTimerDisabled = YES; 这确实可以保持应用程序的活动状态,但也会迅速耗尽电池。我遇到了其他即使在屏幕锁定时也会流式传输音乐的应用程序(非苹果应用程序),因此我想必须有一种方法可以保持GPS数据流的活动状态。

有人能帮忙吗?谢谢!


1
我以前尝试过关闭屏幕锁定的方法,但电池很快就会耗尽,如果这样放置一个小时,设备可能会变得非常热! - Michael Behan
5个回答

6

1

你必须保持屏幕解锁状态,但这并不意味着你必须开启 GPS。你可以关闭 GPS 监控,并在几分钟后再次唤醒它,此外,在一分钟后启动全黑的“屏幕保护程序”可大大减少耗电量。


2
Kendall,请问您能否详细说明一下您的建议?如果我使用[UIApplication sharedApplication].idleTimerDisabled = YES;来保持屏幕解锁,这至少对我来说可以让屏幕和背景灯保持亮着,但是电池会很快耗尽。有没有其他方法可以保持屏幕解锁,但关闭背景灯呢? - David
我认为没有办法禁用背景灯。考虑到屏幕保持最少的数据,因此系统不需要进行其他工作来保持图像在屏幕上,这样电池消耗可能会减少。 - Kendall Helmstetter Gelner

1
如果您的应用程序播放(或记录)声音,即使您播放静音,它也会在屏幕锁定时继续运行。因此,您可能希望尝试通过音频队列服务播放静音以保持应用程序运行。
请注意,我不知道与此问题相关的任何GPS具体信息。另一位评论者说,当屏幕锁定时,GPS被明确禁止运行(考虑到可能存在的隐私问题,这可能是苹果方面明智的决定)。我无法建议这是否正确。

0

我不是100%确定,但我记得在某个地方听说过GPS模块只有在屏幕未锁定时才能工作。(当然,除非你的手机越狱了...)

我想我是在下载一个跑步应用程序时读到这个信息的,该应用程序可以在我外出跑步时跟踪我的位置。该应用程序有自己的“锁屏”,我必须将其保持开启才能正常工作,这会很快耗尽电池。如果我通常锁定屏幕然后再次解锁它,它就必须重新获取我的位置。


0

我认为这是不可能的(虽然我过去曾经想过能够做到这一点)。例如,我知道Safari浏览器可以访问GPS,但当屏幕锁定时它并没有这样做,尽管这可能是出于设计而非限制的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接