我正在尝试开发一个有助于人们集中注意力的应用。本质上,用户将开始一个他们希望关注的会话。只要用户未打开其他应用程序(例如,用户无法打开Facebook),此会话就会持续。如果用户这样做,则会话被标记为失败。用户尝试使用尽可能长的时间。
我看到的问题是,一旦屏幕关闭,iOS不允许应用程序运行超过3分钟。这意味着用户可以开始会话,然后将电话放下3分钟或更长时间,然后在解锁电话时,他们会看到主屏幕。该应用程序已被杀死。然后,用户可以自由地漫游并查看其他任何应用程序,这违背了我的应用程序的目的。
我可以使用在服务器上运行的计时器来维持整个会话的持续时间,并在用户重新打开应用程序后恢复会话,但这不能解决用户能够在重新打开应用程序之前漫游的问题。
有什么方法可以解决iOS杀死我的应用程序的问题?我想要的行为是:1)用户开始会话。2)会话计时器开始。3)如果用户离开应用程序,会话将在30秒警告后终止。4)如果用户锁定电话,则应用仍会运行。5)用户解锁手机时,显示应用程序(不是主屏幕)。因此,终止逻辑是相同的。
谢谢!
您可以使用观察者(将其添加到ViewController的viewDidLoad):
NotificationCenter.default.addObserver(self, selector: #selector(applicationWillResignActive(notification:)), name: UIApplication.willResignActiveNotification, object: nil)
该函数将如下所示:
@objc func applicationWillResignActive(notification: NSNotification) {
// do something
}