使用ScheduledTimer在后台使用Swift快速刷新应用程序

时间:2019-07-09 22:31:15

标签: swift

我在应用程序中运行计时器,但是当应用程序在后台运行3分钟后,计时器没有运行。我希望这个计时器一直工作。使用此计时器,当我打印到标签上的时钟和从Firebase提取的时钟数据相同时,我将调用一个函数。因此,我一直从Firebase提取数据。我必须在后台运行。因此,我正在运行一个计划功能。例如,当它是22:00时,我运行此功能,但是正如我所说的,它在后台不起作用。如何在后台运行超过3分钟?

2。问题是; Firebase中是否有计划的分配功能? Firebase是否具有crontab?我可以适应我的快速应用程序吗?

timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] timer in
            self?.tickTimer()
        }
  

此代码不会在后台运行超过3分钟。

我是否有机会在下面的代码中运行应用程序一段时间? iOS在什么时期为您提供运行的机会?我想在某些时段运行tickTimer()函数。此功能确定的周期秒数“ UIApplication.shared.setMinimumBackgroundFetchInterval(1800)”吗?

var newData = false

    private func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
        newData = true

        let viewController = self.window?.rootViewController as! MainTableViewController
        viewController.tickTimer()

        completionHandler(newData ? .newData : .failed) // OR completionHandler(newData ? .newData : .noData)
    }
 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        //UIApplication.shared.isIdleTimerDisabled = true
        UIApplication.shared.setMinimumBackgroundFetchInterval(1800)
true
}

0 个答案:

没有答案