每小时安排后台任务swift 4

每小时安排后台任务swift 4,swift,background,task,schedule,Swift,Background,Task,Schedule,我已经寻找和尝试太久了,我如何才能解决我的问题。 我有订单,我需要每小时在我的后端C#上检查它们的更新。甚至在背景状态或前景上 我试过: var timer = Timer.scheduledTimer(withTimeInterval: 5.0, repeats: true) { timer in self.updatePedidos(timer: timer) } func updatePedidos() { print("background started")

我已经寻找和尝试太久了,我如何才能解决我的问题。 我有订单,我需要每小时在我的后端C#上检查它们的更新。甚至在背景状态或前景上

我试过:

var timer = Timer.scheduledTimer(withTimeInterval: 5.0, repeats: true) {
    timer in
    self.updatePedidos(timer: timer)
}
func updatePedidos() {
    print("background started")
    let strdata = Functions.getMostRecentDtPedido()
    Functions.loadOrdersFromLastSyncByApi(strdata)
}
此外:

此外:

最后,我不能设置计时器:

NotificationCenter.default.addObserver(self, selector: #selector(updatePedidos), name:UIApplication.didEnterBackgroundNotification, object: nil)
@objc func updatePedidos() {
    print("background started")
    let strdata = Functions.getMostRecentDtPedido()
    Functions.loadOrdersFromLastSyncByApi(strdata)
}
它们并不是在后台状态下打印“后台启动”,而是在前台打印。我在info.plist上添加了:

<key>UIBackgroundModes</key>
    <array>
        <string>fetch</string>
    </array>
ui背景模式
取来

您可以使用静默推送通知进行尝试。每小时发送一次静默推送通知,并在后台模式下唤醒应用程序,执行任务一段时间

您可以在下面的文章中阅读有关后台任务执行的更多详细信息:


您将无法获得在后台以这样的间隔运行的内容。一旦你的应用进入后台,它将被暂停,如果需要,可以终止。
NotificationCenter.default.addObserver(self, selector: #selector(updatePedidos), name:UIApplication.didEnterBackgroundNotification, object: nil)
@objc func updatePedidos() {
    print("background started")
    let strdata = Functions.getMostRecentDtPedido()
    Functions.loadOrdersFromLastSyncByApi(strdata)
}
<key>UIBackgroundModes</key>
    <array>
        <string>fetch</string>
    </array>