首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与后台iOS 10中运行的计时器有关的问题

与后台iOS 10中运行的计时器有关的问题
EN

Stack Overflow用户
提问于 2017-06-21 04:21:11
回答 3查看 962关注 0票数 0

我正在制作一个应用程序,帮助人们跟踪工作间隔。

我需要的是,计时器应该运行至少30分钟,无论应用程序是在前景或背景。

代码语言:javascript
复制
func startFocus() {
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(Pomodoro.focusIntervalCounter), userInfo: nil, repeats: true)
}

func focusIntervalCounter() {

    dynamic_focusIntervalSecond -= 1
    focusDelegate?.updatingFocusCountingDown(timeStamp: seconds2Timestamp(intSeconds: dynamic_focusIntervalSecond), secondLeft: dynamic_focusIntervalSecond)

    if dynamic_focusIntervalSecond == 0 {
        timer.invalidate()
        focusDelegate?.focusCountingDowndid(end: true)

    }
}

focusIntervalCounter() should invalid the timer when the `dynamic_focusIntervalSecond` is 0.

当程序处于前台时,它可以正常工作,但在屏幕关闭后,计时器只工作一段时间并停止。这是继续计时器计数的方法吗?

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-21 04:34:43

不,您可以运行最多5分钟的后台任务,使用后台更新功能触发应用程序刷新,或者使用通知触发后台操作。在iOS中,无法保证任何代码在30分钟后都会在后台持续运行。本地通知将使您的代码能够在用户选择通知中的操作后运行。静默推送通知可以在后台打开收据中运行一些代码,但是需要一个internet连接,并且不能保证被传递。

有关更多信息,请参见此问题:背景中的iOS定时器

票数 1
EN

Stack Overflow用户

发布于 2017-06-21 05:51:50

不,不能在后台模式下运行计时器。您可以创建一个UIBackgroundTaskIdentifier,它将给您180秒的时间,正如我所观察到的,我不确定它是否会随操作系统版本的不同而变化。

您可以尝试将本地通知安排30分钟。

如果您使用推送通知、Airplay、Location、VOIP应用程序、蓝牙、新闻台、后台获取,可以启用后台模式,有关详细信息,请参阅本苹果开发人员文档BackgroundExecution

票数 1
EN

Stack Overflow用户

发布于 2017-06-21 04:36:27

有些事情在后台是不可能的,您是否切换了您的项目以启用后台模式?你可以更多地了解它,这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44666843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档