У меня есть вопрос относительно iOS Фоновых задач или процесса. У меня есть приложение, которое должно информировать вас с помощью локального уведомления каждые 15 минут , если у вас есть новое письмо -> если у вас его нет, ничего не происходит.
Я нашел много учебников по Swift 4, Swift 5, но только немногие должны работать над iOS 13 и новым фреймворком BackgroundTask. Я попробовал все из них, и я не получил рабочее решение (сначала я получаю ошибки, потому что я пробовал это на Симуляторе, теперь я получаю сообщение "Не могу закончить задачу bg ..." - Кажется, это ошибка в Xcode .) и приложение не может обновить sh без причины.
AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
UNUserNotificationCenter.current().delegate = self
registerBackgroundTaks()
return true
}
func applicationDidEnterBackground(_ application: UIApplication) {
scheduleEmailFetcher()
}
//MARK: Register BackGround Tasks
private func registerBackgroundTaks() {
BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.InformationSystem.emailFetch", using: nil) { task in
//This task is cast with processing request (BGProcessingTask)
self.setNotification()
self.handleEmailFetcher(task: task as! BGProcessingTask)
}
}
func cancelAllPandingBGTask() {
BGTaskScheduler.shared.cancelAllTaskRequests()
}
func handleEmailFetcher(task: BGProcessingTask) {
scheduleEmailFetcher() // Recall
task.expirationHandler = {
self.cancelAllPandingBGTask()
}
print("Handling BG Task!")
// GET Request to server and other logic here?
setNotification()
task.setTaskCompleted(success: true)
}
func scheduleEmailFetcher() {
let request = BGProcessingTaskRequest(identifier: "com.InformationSystem.emailFetch")
request.requiresNetworkConnectivity = true
request.requiresExternalPower = false
print("Scheduled")
request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60)
do {
try BGTaskScheduler.shared.submit(request)
} catch {
print("Could not schedule email fetch: \(error)")
}
}
Есть ли кто-нибудь, кто может помочь мне избавиться от него ?
Большое спасибо за помощь!