-
Notifications
You must be signed in to change notification settings - Fork 0
/
58_BackgroundTaskExample.swift
31 lines (28 loc) · 1.34 KB
/
58_BackgroundTaskExample.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import SwiftUI
struct BackgroundTaskExample: View {
var body: some View {
VStack {
Text("Дождитесь СМС со ссылкой для авторизации")
Spacer()
}
.task { await requestSMS() }
}
/// Создает фоновый таск и возвращает его идентификатор
private func startBackgroundTask() -> UIBackgroundTaskIdentifier {
var identifier: UIBackgroundTaskIdentifier?
identifier = UIApplication.shared.beginBackgroundTask {
// Блок, выполняющийся при завершении таска, нужно вызвать `endBackgroundTask`
UIApplication.shared.endBackgroundTask(identifier ?? .invalid)
}
return identifier ?? .invalid
}
private func requestSMS() async {
// Создаем таск для фоновой работы, чтобы завершить его
// после успешной авторизации
let taskId = startBackgroundTask()
// Выполняем запрос
// await myService.requestSMSForAuth()
// После завершения авторизации завершаем таск для фоновой работы
await UIApplication.shared.endBackgroundTask(taskId)
}
}