我想在我的应用程序进入后台时发送本地通知,通知来自调用网络服务(我们不能使用推送通知,因为我们使用本地服务器并且没有互联网访问权限),我知道后台获取功能我在我的应用程序中打开了它,但我希望另一个计时器每 2 分钟调用一次网络服务,并在应用程序未终止时推送通知,有人有想法吗?
谢谢
最佳答案
不幸的是,从您的服务器推送通知是让后台任务按您决定的时间表进行的唯一方式。
后台获取用于从服务器中提取数据,以便用户在打开应用程序时为用户做好准备,但 iOS 会根据用户使用应用程序的时间来决定何时使用它。
您可以检测应用程序何时进入后台并在必要时安排本地通知,但只有很短的时间来执行代码,然后它会与您尝试运行的任何计时器一起暂停。
您可以通过两种方式检测应用何时进入后台:
在您的应用委托(delegate)中实现
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 .
关于ios - 如何在应用程序进入后台时发送本地通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52204065/