我想在我的应用程序进入后台时发送本地通知,该通知来自调用Web服务(我们无法使用推送通知,因为我们使用本地服务器并且没有Internet访问权限),我知道后台获取功能我在应用程序中将其打开,但是我希望另一个计时器每2分钟调用一次Web服务,并在应用程序未终止时推送通知,有人想这样做吗?
谢谢
答案 0 :(得分:1)
不幸的是,来自服务器的推送通知是根据您自己的时间表安排后台任务的唯一方法。
背景提取用于从服务器提取数据,以便用户在打开应用程序时就可以使用,但是iOS会根据用户使用应用程序的时间来决定何时使用它。
您可以检测应用程序何时进入后台,并在必要时安排本地通知,但是只有很短的时间来执行代码,然后代码才会与您尝试运行的任何计时器一起挂起。
您可以通过两种方式检测应用何时进入后台:
在您的应用程序委托中实现applicationWillResignActive()
或UIApplicationDidEnterBackground()
方法。
注册UIApplicationDidEnterBackground
通知。
以下是注册通知的示例:
let center = NotificationCenter.default
center.addObserver(self, selector: #selector(yourMethod), name: Notification.Name.UIApplicationDidEnterBackground, object: nil)
您还可以像这样随时检查应用状态:
let state = UIApplication.shared.applicationState
if state == .background {
// App is in background
}
else if state == .active {
// App is in foreground
}
有关extending background execution time,background app refresh和background modes的更多信息。