首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

swift 4中的定时器在后台不工作,有什么办法可以工作吗?

在Swift 4中,定时器默认情况下在后台是不工作的。这是因为在后台运行时,应用程序的运行时间是受限制的,为了节省电量和资源。然而,我们可以采取一些方法来使定时器在后台工作。

一种方法是使用backgroundTaskIdentifier来延长应用程序在后台运行的时间。可以通过以下步骤来实现:

  1. 在AppDelegate.swift文件中,添加一个全局变量:
代码语言:txt
复制
var backgroundTask: UIBackgroundTaskIdentifier = .invalid
  1. 在需要后台定时器的地方,创建一个后台任务:
代码语言:txt
复制
backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in
    UIApplication.shared.endBackgroundTask(self?.backgroundTask ?? .invalid)
    self?.backgroundTask = .invalid
}
  1. 在定时器的回调函数中,添加以下代码:
代码语言:txt
复制
if backgroundTask != .invalid {
    UIApplication.shared.endBackgroundTask(backgroundTask)
    backgroundTask = .invalid
}

这样做将允许应用程序在后台运行更长的时间,从而使定时器继续工作。

另一种方法是使用UNUserNotificationCenter来发送本地通知,然后在用户点击通知时执行相应的操作。可以按照以下步骤进行操作:

  1. 在AppDelegate.swift文件中,添加以下代码来请求用户通知权限:
代码语言:txt
复制
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
    // 处理授权结果
}
  1. 在需要后台定时器的地方,创建一个本地通知:
代码语言:txt
复制
let content = UNMutableNotificationContent()
content.title = "定时器通知"
content.body = "定时器触发的操作"
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: true)
let request = UNNotificationRequest(identifier: "timerNotification", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { (error) in
    // 处理添加通知的结果
}
  1. 在AppDelegate.swift文件中,添加以下代码来处理用户点击通知的操作:
代码语言:txt
复制
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    if response.actionIdentifier == UNNotificationDefaultActionIdentifier {
        // 执行定时器触发的操作
    }
    completionHandler()
}

通过发送本地通知,我们可以在定时器触发时提醒用户,并在用户点击通知时执行相应的操作。

以上是两种在Swift 4中使定时器在后台工作的方法。根据具体的应用场景和需求,选择适合的方法来实现后台定时器功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

6月份最新语言排行:Java,Python我更看好谁?

当然也有会转向其他方向,比如转前端,转后台,至于其他方向,我最近也听说五年PHP大神转向java,Python转Go,GO转PHP,PHP转Python,目前而言,很多人学精,因各种原因,转方向...,这样网格式跳转貌似一部分IT人群中成为一个趋势,有人说为了生活,也是没办法。...其实参加工作多年后,我才真正开始意识到,写程序用什么语言不重要!重要是研究探索让计算机(服务器)可以跑得更快,用最少内存完成最多工作。用最优数据结构存储最多数据。...更多阅读 百人团队参与游戏研发体验 三条命令解决断网问题 一波Flutter酷炫特效来袭 Java锁,真的有这么复杂工作了几年,终于转型做了管理!...记五月一个Android面试经 浅谈final、finally、finalize什么不同? 如果有什么问题,也可以加入我群进行学习和技术。

1K20

根据Git推算程序员大佬作息:同样是熬夜,为什么他发量那么多?

同为程序员,自然办法弄清楚了。俄罗斯程序员 Ivan Bessarabov 根据大佬们 git 上工作时间推算出他们作息时间。...我们查看了他们工作时间以及照片,只能羡慕地说:同样是熬夜,为什么他发量那么多? 如何成为大佬?这恐怕是所有领域工作者都有的疑问。那么大佬都是怎么安排工作呢?这与 TA 们成就有何关系呢?...Chirs Lattner 是 LLVM 编译器和 Swift 语言作者。他曾在苹果公司工作,并短暂就职于特斯拉,现任职于谷歌。 以下是根据他 Swift 语言项目上活动时间统计出结果: ?...Chris 「心型」发际线可以说是很别致了。这一发际线成因似乎也能从 commit 分布中找出蛛丝马迹。这位大神似乎非常喜欢通宵,那么你以为他早上和中午是在补觉?...,Chris twitter 上表示:经常深夜撸代码是为了白天可以更多时间进行团队交流和合作。 ?

77120

通过 Git 推算程序员大佬作息,这波操作有点秀!

同为程序员,自然办法弄清楚了。 俄罗斯程序员 Ivan Bessarabov 根据大佬们 git 上工作时间推算出他们作息时间。...我们查看了他们工作时间以及照片,只能羡慕地说:同样是熬夜,为什么他发量那么多? 如何成为大佬?这恐怕是所有领域工作者都有的疑问。那么大佬都是怎么安排工作呢?这与 TA 们成就有何关系呢?...Chirs Lattner 是 LLVM 编译器和 Swift 语言作者。他曾在苹果公司工作,并短暂就职于特斯拉,现任职于谷歌。 以下是根据他 Swift 语言项目上活动时间统计出结果: ?...Chris 「心型」发际线可以说是很别致了。这一发际线成因似乎也能从 commit 分布中找出蛛丝马迹。 这位大神似乎非常喜欢通宵,那么你以为他早上和中午是在补觉?...,Chris twitter 上表示:经常深夜撸代码是为了白天可以更多时间进行团队交流和合作。 ?

49320

前端 vs 后端:哪一个适合你?

同时涉猎前端和后端,这样你就能感受到你更喜欢什么。这么做会很辛苦?当然会,但是这也会极大地增加你找到喜欢做事情机会。 在前端和后端生态系统中,仍然许多你可以选择并且能做得非常出色专业。...前后端通吃另一个好处是,你可以了解它们之间是如何协同工作。无论你决定在未来关注哪个方面,这都非常有用。如果你了解另一半工作原理,那么你就可以项目中创建更好代码和接口。...Go $136k Swift $120k Python $116k JavaScript $110k HTML/CSS $105k 需要注意是,这些工资和趋势可能会因你工作地点和是否寻找远程工作而有所不同...真正转向后端之前,我做了 3 年全栈开发。吸引我来到后台是 Ruby 简洁。JavaScript 和前端语言对我来说总是缺乏组织性。我还热衷于优化代码性能。我喜欢想办法让事情运行得更好更快。...后端似乎给了我更多机会。 最后,我不是一个非常注重视觉或艺术的人。有些人可以看看网页,然后想办法把它放在什么地方。我从来都不擅长这个,所以后端让我更自然、更舒服。

1.4K20

【RTOS训练营】继续程序框架、tick中断补充、预习、课后作业和晚课提问

1.5 代码原则 再讲一下编写程序,编写函数一些原则。 我们写C程序时有头文件、C文件。 头文件作用是什么? 暴露接口 C文件作用是什么?...同事一看你头文件,就知道怎么去使用你代码。 全局变量不要暴露出去,对于全局变量,绝对建议头文件里面声明。...问: 可以检测 按键下降沿和上升沿 时间 触发 时间差 来消抖?? 答: 理论上是可以,但是用定时器是最简单方法。...假如我现在要获取按键值,那我某个应用拿到数据之后,就要把相关工作都做完,不然其他应用是拿不到按键数据。这个理解问题?...答: 我们第1个项目里,只用前台后台框架,只有一个main函数不断运行。 main函数读取环形buff数据,只有它一个人读取。

43740

iOS 开发面试通关指南:67 个必知问题!

Swift可以?魔法……随便说点你知道信息——例如为什么这样是危险,等等。 NSArray和NSSet什么区别?不要只说集合包含独特元素,还要进一步说明它在不同情况下是如何表现。...知道什么什么就行——例如,可以谈谈什么情况下是可以做到这一点。 36.我们应该如何处理后台操作?至少要知道一种方法。 GCD和NSOperation之间什么异同?...如果你响应性编程经验,那么你可以谈谈,并顺便说说响应式编程中这种问题更难解决。 59.什么是持续集成(continuous integration,CI)?你用过?配置过?...你对新工作什么期待?坦诚地说就可以。你所追求大概率是更高薪水,但除此之外,一定还有其他东西吧! 以上只是面试官可能会提一些问题。 结论 最好能始终跟上iOS世界变化,那对你来说是很有利。...阅读博客,收听播客,关注有关Apple开发人员新闻,即使你很大概率工作中并不需要知道所有那些知识,对新知识持开放态度总是好,并且,你可以让面试官知道你一直不断学习。

1.1K20

iOS狗都不要,用这份面试真题,21天拿了4个大厂Offer

如果用setvalue实现可以 5、touch事件分发、查找过程、如果要求touch子视图扩展点击范围应该怎么做 6、isa指针 7、block几种类型,分别在什么情况下表示 8、字符串压缩算法...单例模式重写allocwithzoomzoom指的是什么 16、dispatch_once源码了解过 17、isa指针什么了解 18、数据持久化用什么 19、http请求缓存字段了解...3、原生与RN通信接口是如何维护,RN和原生通信,会遇见iOS和安卓不一致问题,什么办法保持一致 4、RN基本原理,刚才说dom映射做了哪些优化来保证页面更新卡顿 5、你们项目的RN引擎是单实例还是多实例...你现在代码还能看到autoreleasepool么 9、sdwebimage 给一个图片到屏幕展示,是如何工作 10、为什么使用sdweimage过程中,卡 11、给你一个url,到服务器返回一个...2、 swift和OC什么区别 3、 多线程应用场景 4、两个异步任务如何去做同步?

1.4K20

移动端倒计时不准:手机锁屏熄屏APP后台运行屏幕卡顿

,登录注册中获取验证码时候也会有倒计时,有的页面只有一个倒计时,而有的页面作为列表页,列表中每一项都会有倒计时,今天就来聊聊 Worker API js倒计时中使用,以及为什么要使用 Worker...,但这并不是最关键,大家可以发现,倒计时走到37时候,用手指操作页面大概两三面的时间,按正常来讲,时间应该倒计时到 35秒或者34秒,但是图中很清楚可以看到,在手指停止操作后,时间却从37秒继续倒计时...这个就是我们要说问题,与其说是 setInterval 或者 setTimeout 问题,倒不如说是 ios 系统问题,那么办法解决这个问题?这就是我们要谈到 Worker API。...Worker APIweb Worker API 允许 JavaScript 在后台运行,浏览器实现 Worker API 方式很多,每个浏览器厂家可能不尽相同,他们可以使用现线程或后台进程等,这使得...中刷新你页面,可以看到依然正确工作,之后再拿到ios中做之前gif图同样操作,如下图:我们可以看到,55秒时候开始拖动页面,这个时候倒计时停止了,不过,当我们放手之后,倒计时会立刻恢复到正常应该到达时刻

1.9K10

携程网Ceph实践之路

答案:首先是过滤和定位问题所在 问题2: 我几个问题,第一,携程只使用Swift接口,那为什么直接使用Swift?第二,ssd做raid1是用来做journal还是用来装系统?...使用Swift主要是因为前期我们调研过Swift对象存储,并且使用过程中也没有发现S3可以支持而Swift不能支持功能。 问题10:跨机房同步你们是异步可以基于用户还是bucket同步?...答:是的,都可以 问题11:对象存储能提高速度? 答:SSD主要是用来存放日志,当然对提升性能也是帮助,目前我们还没对性能进行优化。 问题12:RGW服务器配置是如何?...civetweb配置https办法么? 答:CivetWeb,我们没有使用https 问题15:数据同步是基于文件还是cephobj? 答:数据同步我们调用的上层Swift接口。...答:为了解决本地访问问题; 问题21:同步时候是同步object?还是用了其他什么办法? 答:几个层面的Object,我们是调用Swift接口来同步

3.3K30

Kotlin vs Flutter,我到底应该怎么选?

这个问题又可以展开为以下3点: 你想要学习移动开发? 你想要得到一份移动开发者工作? 你想要以个人开发者或小型团队来开发一款自己移动产品? 关于这几点我们逐个来进行分析。...如果你对Flutter已经了足够多了解,将更容易一些对Flutter需求量比较高地区获得一份工作。...注意,随着你要支持平台越多,这种方案成本也会越大。 你需要自己来编写后台服务器程序? 另外可能还有一种比较少见场景,你需要自己来编写后台服务器程序?...另外,学习Kotlin还可以让你拥有开发后台服务器程序能力,只需要借助Ktor框架就能快速地开发出一个简单后台服务器程序,从而让你工作流程变得更加简单。...如果你希望继续使用原生方式来开发iOS程序,不管Kotlin还是Flutter其实都起不到什么太大作用。不过Kotlin至少可以给你提供一种编写后台服务器程序能力。

2.5K10

Swift 周报 第三十一期

OpenAPI Generator 介绍 话题讨论: 你认为企业实行薪资保密哪些利弊 上期话题结果 上期话题投票结果表明, 2023 年工作更难找情况下,大家面临着更大工作压力,裁员消息传出也增加了担忧...我构建了一个名为 “NewInteractionSheet” 工作表,其目标是向关系交互数组之一添加一个新交互。 添加交互时,此工作表非常有效。但是,由于某种原因,它只能工作一次。...[8] 查看 DocC 代码链接语法,似乎我们办法引用同一模块中文章: doc:GettingStarted 但是我们不能使用前导斜杠语法来指定模块相对路径,因为它已经被 tutorials 命名空间占用...[9] 例如,当我使用 #stringify Swift应用程序中生成代码时,它会在编译期间用新代码替换我一些源代码。那么这个宏包会随我应用程序一起提供?...欢迎关注公众号:Swift社区,后台点击进群,可以进入我们社区各种交流讨论群。希望我们Swift社区是大家在网络空间中另一份共同归属。

15220

iOS开发之UITableView中计时器几种实现方式(NSTimer、DispatchSource、CADisplayLink)

这种方式没有什么特殊就是对Timer直接使用。下方是我们本部分Timer使用代码,当然是使用Swift来实现,不过与OC代码差不多。代码如下所示 : ?...因为Timer默认是添加在RunLoop上DefaultMode上,当Mode切换后Timer就停止了运行。 但是当停止滑动后,Mode又切换了回来,所以Timer可以正常工作了。 ?...当然子线程中更新UI还是需要在主线程中去操作。下方就是上述代码运行效果。从该效果中我们不难看出,当滑动TableView时定时器可以正常工作。 ?...接下来我们来看一下上述代码运行效果,从该效果中我们可以看出该定时器可以正常工作。 ?...屏幕卡顿情况下,每次循环时间时1/60秒。 下方代码,为了不让屏幕的卡顿等引起主线程所对应RunLoop阻塞所造成定时器不精确问题。

1.3K70

接手一个负分 iOS 项目后我做了什么

一开始肯定是用 OC 思维写 Swift 代码。但是熟悉了 Swift 语法后可以慢慢 review 过程中提出可以用更 Swift 写法。...大多数需求设计都是围绕某个需求展开,但是这个需求要融入到现有体系里是很多周边工作要做。比如产品提出用户资料里应该可以打标签。于是画了一个草图里标签。...我们 app 集成了摇一摇反馈 bug 功能,操作步骤,网络请求,设备信息等这些有效信息都会一起收集起来。在后台可以方便看到。告诉用户碰到问题摇一摇,描述一下问题就可以了。...对于我个人而言,其实搞 review 我肯定更轻松。这个功能我肯定能把控所有细节,这样写只是不好而已,也不是不能用。我也大可以不对他们解释为什么这样写是不好。...只要让他们按照我 comment 改就可以了。 但是吃力讨好坚持是为了什么? 我刚工作时候,出去旅游路上遇到一个大学教授。闲聊起来我说我请教你一个问题,中国古代鞋子,会把花绣鞋底。

61920

接手一个负分 iOS 项目后我做了什么

一开始肯定是用 OC 思维写 Swift 代码。但是熟悉了 Swift 语法后可以慢慢 review 过程中提出可以用更 Swift 写法。...大多数需求设计都是围绕某个需求展开,但是这个需求要融入到现有体系里是很多周边工作要做。比如产品提出用户资料里应该可以打标签。于是画了一个草图里标签。...我们 app 集成了摇一摇反馈 bug 功能,操作步骤,网络请求,设备信息等这些有效信息都会一起收集起来。在后台可以方便看到。告诉用户碰到问题摇一摇,描述一下问题就可以了。...对于我个人而言,其实搞 review 我肯定更轻松。这个功能我肯定能把控所有细节,这样写只是不好而已,也不是不能用。我也大可以不对他们解释为什么这样写是不好。...只要让他们按照我 comment 改就可以了。 但是吃力讨好坚持是为了什么? 我刚工作时候,出去旅游路上遇到一个大学教授。闲聊起来我说我请教你一个问题,中国古代鞋子,会把花绣鞋底。

54330

AJAX常见面试问题

大家好,又见面了,我是你们朋友全栈君 1.工作当中会和后台交互? 那你能说说封装好 ajax里几个参数 ? url: 发送请求地址。...答案是肯定,用过Gmail知道,Gmail下面采用Ajax技术解决了这个问题,Gmail下面是可以后退,但是,它也并不能改变Ajax机制,它只是采用一个比较笨但是有效办法,即用户单击后退按钮访问历史记录时...周宁老师上课讲过php 45.与后台交互,AJAX只是其中一小部分,其他知道? 46.在上一家公司要上线作品具体流程是什么?...前后台项目整合,测试,上线 47.手机端和PC端什么区别,需要注意哪些方面? 本质上没有什么太大区别,需要注意一些浏览器兼容问题。 48.用JQ完整写出AJAX与后台交互方法。...55.初始化CSS除了浏览器兼容还有什么作用? 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。

1.8K20

grpc-swift入门

(注意,我这里问题是「为什么要用gRPC」,而不是「为什么要用RPC」) 天下武功,唯快破 这是一条受用千年古训。...上面介绍了,我们客户端这边,调用了sayHello()方法,同样地,到时候我们App,也会调用这个方法,获取数据,而这个方法自然是用Swift语言写,我们需要自己写这个方法?答案是不需要。...兴趣前端小伙伴,也可以试试往helloworld.proto 文件加点方法,改点内容,重新生成代码,更新实现。感受一下后台开发。...接口代码生成 OK,现在我们 .proto文件了,假如我们碰到一位没那么nice后台同事,把 .proto文件直接丢过来,要怎么生成Swift代码?...不过,先看看生成代码文件长什么样: Generated Swift Files 可以看到,两个文件(命名还有点奇怪): .grpc.swift文件生成是:API接口方法(对应上面的SayHello

1.1K20

Ask Apple 2022 与 SwiftUI 有关问答(下)

但是,如果你只是自己使用它,并且条件可控,那么处理这些情况也是合理。创建一个考虑到所有情况通用布局( 例如:VStack、HStack )是一项相当艰巨工作。... SwiftUI 4 中,可以使用 .scrollContentBackground(.hidden) 隐藏列表默认背景searchableQ:是否办法.searchable() 修饰器中以编程方式设置搜索字段焦点...将背景扩展到安全区域Q:如果我一个自定义容器类型,可以接受一个顶部和底部视图,是否办法让 API 调用者将所提供视图背景扩展到安全区域内,同时将内容( 如文本或按钮 )保留在安全区域内?...这意味着我们不能使用 LazyVStack,或任何其他将选择与详细视图绑定自定义视图。扩展这个功能计划?A: iOS 16.1 中,你可以侧边栏里放一个。...所以更想知道你需要这个速度值什么特定用途。可以尝试获取位置改变同时记录时间变化来计算速度。不过如果是涉及到用户交互,建议衡量一下用户对速度敏感程度和交互效果本身,是否可以用更便捷方式实现。

14.7K30

iOS传感器:App前后台切换后,获取敏感信息使用touch ID进行校验1. 指纹识别传感器用法介绍2. Touch ID指纹识别的代码实现3. 判断系统版本号几种方法4. App从后台到前台,

只有Secure Enclave可以访问指纹数据,而且它还把这些数据同处理器和系统隔开,因而这些永远不会被存储苹果服务器上,也不会被同步到iCloud或其他地方。...今天本文都是以Swfit为案例,OC同学可以进行参考。思路一模一样,语法也几乎一模一样。 插一个私信里面的问题,挺具有代表性。 宅胖你为什么可以可以Swift可以写OC?...Swift? 1,我感觉现在会写Swift同学基本上都是会写OC。 2,Swift用了之后,当真会觉得OC麻烦很多,各种层面的麻烦。...3,我所写这些所有的例子里面其实真正用到Swift特性很少,绝大部分情况下都只是简单翻译了一下OC。 4,Swift?你看到了,基本语法几乎和OC一模一样。...什么叫做无论什么途径? 当然啦,我们回到App各种情况啊,例如点桌面的应用图标进来了,双击Home键从后台切换回来

1.4K70
领券