Pie*_*neo 4 swift dynamic-island activitykit
我正在寻找一种每秒或每 2 秒更新实时活动的方法,而不使用推送通知,同时将应用程序保持在后台。
你有什么建议吗?我尝试过类似的操作,但几秒钟后它就停止工作了:
var bgTask = UIBackgroundTaskIdentifier(rawValue: 1324)
bgTask = UIApplication.shared.beginBackgroundTask(expirationHandler: {
UIApplication.shared.endBackgroundTask(bgTask)
})
let timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(updateInfo), userInfo: nil, repeats: true)
RunLoop.current.add(timer, forMode: .default)
Run Code Online (Sandbox Code Playgroud)
似乎没有办法每秒或以任何其他过于频繁的方式更新实时活动。看起来省电在这里至关重要,即使应用程序在后台运行,系统也会在几秒钟后切断更新。
如果您需要在 LiveActivity 上显示计时器,根据docs,可以使用以下初始化程序,该初始化程序Text似乎专用于该用例:
init(timerInterval: ClosedRange<Date>, pauseTime: Date? = nil, countsDown: Bool = true, showsHours: Bool = true)
Run Code Online (Sandbox Code Playgroud)
例如:
Text(timerInterval: context.state.deliveryTimer, countsDown: true)
Run Code Online (Sandbox Code Playgroud)
它创建一个实例,显示在提供的时间间隔内计数的计时器。它只是自动计算时间,因此无需考虑自己实现计时器。但是,当计时器结束时无法侦听以更新活动,因此看起来可能有必要安排通知或后台任务,并在计时器结束时接收/运行和处理它。
似乎这里提到的应用程序使用了我上面描述的机制。您必须考虑您的用例并决定实时活动是否适合您的应用程序。
| 归档时间: |
|
| 查看次数: |
3081 次 |
| 最近记录: |