了解 iPhone 应用程序后台状态

Posted

技术标签:

【中文标题】了解 iPhone 应用程序后台状态【英文标题】:Understanding iPhone App Background States 【发布时间】:2013-03-23 16:34:37 【问题描述】:

我有一个棘手的问题。在我的应用程序中,用户可以更改是否希望应用程序在后台运行。如果是 - 它应该工作,直到用户杀死它。如果不是 - 它应该在用户按下主页按钮之前工作,并且应该在使用顶部按钮锁定屏幕后工作。

因此,plist 文件中有一行名为“应用程序不在后台运行”。如果我让它“是” - 应用程序运行直到按下主页按钮,并且在锁定屏幕后仍然工作。完美的。如果我将其设为“否”-应用程序一直在运行,直到我将其杀死。完美。

但我猜你不能从应用程序更改 plist 值。好吧,我找到了一种使用 applicationDidEnterBackground 的方法:

if (userDontWantItRunInBackground)  exit(0); 

但是这样做有问题(除了苹果不推荐):

if "application does not run in background" = YES:

applicationDidEnterBackground is NOT CALLED on locking the screen

if "application does not run in background" = NO:

applicationDidEnterBackground is CALLED on locking the screen

没有意义!这不允许我让应用在锁定屏幕上运行!

【问题讨论】:

【参考方案1】:

ios 4 中,如果您的应用愿意,您无法避免空闲时间睡眠。

   [[UIApplication sharedApplication] setIdleTimerDisabled:YES];

以下是有关 iOS 后台执行的更多信息:

More:

【讨论】:

以上是关于了解 iPhone 应用程序后台状态的主要内容,如果未能解决你的问题,请参考以下文章

如何在后台保持 iphone ios websocket 连接处于活动状态?

当 Apple Watch 处于后台状态或睡眠模式时,我们如何从 iphone 向 Apple Watch 发送消息?

当应用程序在后台并且手机处于振动状态时,一些闹钟应用程序(例如 Alarmy)如何能够在 iPhone 上播放声音

iPhone:重复后台任务

如何保持用户 iPhone 的显示屏处于开启状态?

当 iPhone 被锁定并且用户按下电源按钮时编程后台行为