ios - 如何延长 'backgroundTimeRemaining' 的时间?

标签 ios swift xcode background-process ios13

我想将 backgroundTimeRemaining 延长 30 秒以上
根据苹果公司的说法

“该值仅在应用程序进入后台并在前台使用 beginBackgroundTask(expirationHandler:) 启动至少一项任务后才有效。

系统条件可能会通过调用到期处理程序或终止应用程序来提前结束后台执行。”

所以我尝试添加和编辑但它无法工作

这是我试过的

//MARK:- BeginBackgroundTask
func registerBackgroundTask() {
  backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in
    self?.endBackgroundTask()
    print(self!.beginTime)
  }

//TODO: Add new background time ex: 60 sec
var backgroundTimeRemaining: TimeInterval {
        get{
            return 60
        }
    }

assert(backgroundTask != .invalid)
} 

//MARK:- EndBackgroundTask
func endBackgroundTask() {
  print("Background task ended.")
  UIApplication.shared.endBackgroundTask(backgroundTask)
  backgroundTask = .invalid
}

最佳答案

backgroundTimeRemaining对您的应用程序提供信息。该应用程序不控制系统给它多少时间。您可以请求一些后台时间以完成一些用户请求的操作,您可能会收到它,但您无法控制多少时间。您将需要重新设计以不需要这个。
beginBackgroundTask点是标记有限长度的事件,如果应用程序要在中间进入后台,那么多花几秒钟来完成会很有用。例如,如果您在 willEnterBackground 中启动后台任务,或者您不是在调用平衡 endBackgroundTask及时,您可能正在滥用系统,并且系统往往根本不给您后台时间。

Advances in App Background Execution获取 Apple 关于后台执行的最新指南。

关于ios - 如何延长 'backgroundTimeRemaining' 的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59802712/

相关文章:

ios - 如何从 Firestore 将包含对象的数组获取到 Xcode 中的模型

ios - iOS 开发者计划上的多个帐户

ios - 遵守 Swift 协议(protocol)

ios - 如何快速从 Apple Watch/WatchKit 的 super View 中删除 View

ios - 当节点下面的节点被删除时,节点不会移动

ios - Swift 中的 YouTube-Player-iOS-Helper 不工作但没有错误

ios - 使用 OAuth 1 的 Swift (Xcode) REST API 连接

iphone - 从 iOS 中的 Evernote API 注销

ios - Swift:对特定对象 ID 的 CoreData 调用

ios - Flutter/FCM 通知未到达 Codemagic iOS 版本