我正在尝试设置一些BackgroundTasks在应用程序关闭时定期运行一些代码(比如每天一次)。我相信BackgroundTasksswift 上的 API 就是为了这个?(如果我弄错了,请告诉我)。我按照Apple 文档上的文章来实现它,并调整它以适应 SwiftUI。
问题:后台任务永远不会触发,但处于“待处理”状态(如图所示)
免责声明:我确实添加了该Background Modes功能并进行了检查Background fetch,Background processing并将标识符添加到Info.plist
代码:
Main- 设置应用程序委托,获取场景,设置 UserDefaults 计数器,获取所有待处理任务的按钮,显示 UserDefault 计数器的文本,添加到 UserDefault 计数器的按钮,schedule()当应用程序进入后台时调用任务
import SwiftUI
import BackgroundTasks
@main
struct GyfterApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
@Environment(\.scenePhase) var scene
@AppStorage("test") var test = 1
var body: some Scene {
WindowGroup {
VStack {
Button("Test") {
BGTaskScheduler.shared.getPendingTaskRequests { all in
print("Pending Tasks Requests", all)
}
}
Text("\(test)") …Run Code Online (Sandbox Code Playgroud)