BGContinuedProcessingTask — эта штука включена? в UIKit, то естьIOS

Программируем под IOS
Ответить
Anonymous
 BGContinuedProcessingTask — эта штука включена? в UIKit, то есть

Сообщение Anonymous »

Даже в очень простом тестовом проекте UIKit я не могу заставить BGContinuedProcessingTask (новинка в iOS 26) что-либо делать.
Но, используя по существу тот же код в проекте SwiftUI, он работает нормально.
Поэтому мой вопрос: смог ли кто-нибудь разработать способ заставить BGContinuedProcessingTask работать в UIKit проект?
Пример кода здесь основан на https://github.com/infinitepower18/BGCo ... ngTaskDemo — я делаю именно то, что делает этот код, и действительно, этот код отлично работает на моем устройстве, но когда я помещаю тот же код в проект UIKit, задача никогда не запускается. (Вы должны предположить, что я правильно настроил свой Info.Plist и возможности; проблема не в этом.)
import UIKit
import BackgroundTasks
import SwiftUI

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
register()
}

var registeredCleanupTask = false

/// Registers the background continued processing task with the system.
private func register() {
if registeredCleanupTask {
return
}
registeredCleanupTask = true
BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.neuburg.matt.test.cleanup2", using: nil) { task in
guard let task = task as? BGContinuedProcessingTask else { return }

var wasExpired = false

task.expirationHandler = {
wasExpired = true
}

task.progress.totalUnitCount = 100
task.progress.completedUnitCount = 0

while (task.progress.completedUnitCount < task.progress.totalUnitCount) && !wasExpired && !task.progress.isFinished {
sleep(1)
task.progress.completedUnitCount += 1
task.updateTitle("Title", subtitle: "\(task.progress.completedUnitCount)% complete")
}
task.setTaskCompleted(success: true)
}
}

/// Runs the background continued processing task.
private func runTask() {
let request = BGContinuedProcessingTaskRequest(
identifier: "com.neuburg.matt.test.cleanup2",
title: "Title",
subtitle: "Running..."
)
request.strategy = .queue

do {
try BGTaskScheduler.shared.submit(request)
} catch {
print(error)
}
}

@IBAction func doButton(_ sender: Any) {
runTask()
}
}



Подробнее здесь: https://stackoverflow.com/questions/798 ... it-that-is
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»