使计时器在后台 iOS 上运行 3 分钟以上

Posted

技术标签:

【中文标题】使计时器在后台 iOS 上运行 3 分钟以上【英文标题】:make timer run on background iOS for more than 3 minutes 【发布时间】:2016-04-24 01:30:24 【问题描述】:

所以我需要这个应用程序运行超过 3 分钟的计时器,并播放大约 45 秒的声音,这里的大多数解决方案在 ios 上只运行不到 3 分钟。有没有办法让它一直运行,除非应用程序停止?

经过研究,我想解决方案是实现beginBackgroundTaskWithExpirationHandler

并通过提供handler 来阻止它并在plist 上设置位置更新?

音频方面,除了设置plist,播放音频还需要做什么?

Swift how to use NSTimer background? iphone - NSTimers in background Run app for more than 10 minutes in background

【问题讨论】:

我有这个计时器应用程序..它显然在我点击主页按钮后在后台运行,它可以运行一个小时..!!! 那是什么计时器应用程序?也许我们可以看一下并告诉你它在做什么。 简单间隔计时器。欣赏它。搜索时的第一个 蓝色的..应用图标上有两个进度条。不是红色的 itunes.apple.com/us/app/simple-interval-timer/id458334253?mt=8 【参考方案1】:

不,为了让我们所有人免于消耗电池电量的应用,Apple 不允许应用在后台继续运行超过几分钟。只有非常特殊的限制(音乐播放应用程序、VOIP、导航应用程序等)允许持续操作。在细节方面,这在About the Background Execution Sequence中有描述。

如果您想在未来某个时间通知用户某事,您可以使用本地通知。但是,当您这样做时,您无法控制您的应用程序是否重新启动。只有当用户点击通知时(假设他们甚至授予您的应用程序通知权限),应用程序才会重新打开。有关更多信息,请参阅UserNotification framework documentation 中的本地通知讨论。但请注意,这并不是针对每 45 秒发出一次警报,而是针对安排在未来某个时间的重要通知。

有关如何将本地通知与计时器结合的讨论,请参阅swift NSTimer in Background 和此后续问题swift calculate time for timers running in background。

【讨论】:

我有这个计时器应用程序..它显然在我点击主页按钮后在后台运行,它可以运行一个小时..!!它每 1 分钟发出一次哔声,当我进入时,计时器仍然开启。

以上是关于使计时器在后台 iOS 上运行 3 分钟以上的主要内容,如果未能解决你的问题,请参考以下文章

iOS 保证定时器进入后台依然运行

iOS解决应用进入后台后计时器和位置更新停止的问题

使NSTimer在后台运行在物理设备上

iOS:每 2 分钟在后台播放一次短声[关闭]

在后台永远运行Swift 2.0应用程序以更新服务器的位置

尝试在屏幕关闭时让 Apple Watch 计时器应用程序在后台运行