SuperAPI AI 工具集

axiom-background-processing

通用与其它

查看项目

更新于 10-16 04:30

技能介绍

用途:该技能用于 iOS 后台任务(BGTaskScheduler)的实现与排错,核心观点是把后台任务视为系统酌情调度的作业——你申请时间窗口,系统决定何时或是否执行。多数“任务从不运行”源于注册错误或对调度因素理解不足,因此提供系统化调试而非猜测。要求 iOS 13+(BGTaskScheduler)、iOS 26+(BGContinuedProcessingTask)、Xcode 15+。

主要能力:覆盖任务类型选择决策树、注册与调度检查清单、控制台日志过滤(subsystem:com.apple.backgroundtaskscheduler)、LLDB 调试与模拟器限制说明,以及“开发能跑、生产不跑”的 7 项调度因素与节流行为。

必要用法:注册必须在应用启动完成前进行,通常在 didFinishLaunchingWithOptions 中调用 BGTaskScheduler.shared.register(forTaskWithIdentifier:using:),标识符需与 Info.plist 的 BGTaskSchedulerPermittedIdentifiers 完全一致,并按任务类型配置 UIBackgroundModes(fetch、processing)。调度用 BGAppRefreshTaskRequest 或 BGProcessingTaskRequest 的 submit(request),earliestBeginDate 是最小延迟而非精确时间。处理器中应先设置 expirationHandler,再执行工作,并在所有路径调用 setTaskCompleted(success:)。BGProcessingTask 对 CPU 密集工作应设 requiresExternalPower = true,并分块保存进度。SwiftUI 可用 .backgroundTask(.appRefresh(...)) 修饰符,闭包返回即完成。BGContinuedProcessingTask(iOS 26+)在用户操作时动态注册,必须上报 progress,否则自动过期。beginBackgroundTask 用于进入后台后约 30 秒的收尾工作,完成后立即 endBackgroundTask。后台 URLSession 适合大文件传输,可配置 sessionSendsLaunchEvents 与 isDiscretionary。

适用场景:内容刷新、可延迟维护、用户发起的导出/发布、大文件传输、静默推送触发取数。

限制:用户从 App 切换器强制退出应用后不会运行任何后台任务;任务可能被系统提前终止,需增量保存进度;earliestBeginDate 不宜超过约一周;模拟器触发受限;具体运行时机由系统决定,不保证执行。资料未提供收费、价格与平台支持细节。