کار در پس زمینه (Background Work)
کار در پس زمینه یعنی اپ وقتی جلوی چشم نیست، ادامه دهد. «پس زمینه (Background)» یعنی خارج از صفحه فعال. برای کارهای سبک مثل تازه سازی، از زمان بندی سیستم استفاده کن. مثل وقتی گوشی در جیب است و پیام ها آپدیت می شوند.
فعال سازی Background Modes
در بخش Signing & Capabilities، قابلیت Background Modes را اضافه کن. سپس فقط گزینه های لازم را تیک بزن؛ مانند Background fetch، Background processing، Location updates، Audio یا VOIP.
- قابلیت Background Modes را اضافه کن.
- گزینه های موردنیاز را تیک بزن.
- کار سبک را برنامه ریزی کن.
Background Tasks (BGTaskScheduler)
برای اجرای کار هنگام غیرفعال بودن اپ، از BGAppRefreshTask یا BGProcessingTask استفاده کن. وظیفه را ثبت کن، سپس در زمان مناسب اجرا شود.
import BackgroundTasks
let refreshTaskID: String = "com.example.myapp.refresh"
func scheduleRefresh() {
let request: BGAppRefreshTaskRequest = BGAppRefreshTaskRequest(identifier: refreshTaskID)
request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60)
try? BGTaskScheduler.shared.submit(request)
}
func handleRefresh(task: BGAppRefreshTask) {
scheduleRefresh()
task.expirationHandler = {
// cancel work
}
// Do lightweight refresh work here
task.setTaskCompleted(success: true)
}
import SwiftUI
import BackgroundTasks
@main
struct MyApp: App {
init() {
BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.example.myapp.refresh", using: nil) { task in
if let t: BGAppRefreshTask = task as? BGAppRefreshTask {
handleRefresh(task: t)
}
}
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
نکته: اجرای پس زمینه محدود است. کار را سبک نگه دار، فقط حالت های لازم را اعلام کن، و در Background Tasks Debugger تست کن.
جمع بندی سریع
- Background Modes را فقط ضروری فعال کن.
- از BGAppRefreshTask برای کار سبک استفاده کن.
- پس از اجرا، دوباره زمان بندی کن.
- انقضا را مدیریت کن و سریع تمام کن.