Сбой приложения iOS, когда оба .backgroundTask () и .Scenephase в файле приложенияIOS

Программируем под IOS
Ответить
Anonymous
 Сбой приложения iOS, когда оба .backgroundTask () и .Scenephase в файле приложения

Сообщение Anonymous »

У меня были проблемы с .backgroundtask (.apprefresh ()), вызывая прерывистый сбой при запуске моего приложения. Когда происходит сбой, приложение мигает затемненного экрана с информацией о домашнем экране (время дня, срока службы батареи и т. Д.) Странно поворачиваемый ландшафт и право-оборудованный. Этот экран показывает для разделенной секунды, исчезает, а приложение не запускается. Повторное поступление значка приложения часто заново заново запускает приложение без инцидентов. После долгих сбоев с ошибкой я обнаружил, что комментирует либо @environment (\. Scenephase) Private var phase или .backgroundtask (.apprefresh ()) {} код устраняет сбой, так что Это как -то вызвано тем, что оба присутствуют одновременно. Как вы можете видеть в примере ниже, даже не нужно использовать. Создайте сбой на реальном устройстве, хотя вам может потребоваться запустить и покинуть приложение в быстром последовательности 10-20 раз, чтобы увидеть сбой. (Я понимаю, что большинство пользователей вряд ли это сделают - иногда сбой происходит в фактическом приложении при первом запуске. Но это прерывистая проблема, поэтому может потребоваться несколько раундов тестирования.) < /P>
В дополнение к коду, показанному здесь, я добавил возможность «фоновых режимов» с «фоновым избранием» в «Подписание и возможности» и добавил задачу «UpdateBadge» в «Информации» как «разрешенное планирование фоновой задачи. идентификатор ".struct ToyBackgroundTasksApp: App {

@Environment(\.scenePhase) private var phase

var sharedModelContainer: ModelContainer = {
let schema = Schema([
Item.self,
])
let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)

do {
return try ModelContainer(for: schema, configurations: [modelConfiguration])
} catch {
fatalError("Could not create ModelContainer: \(error)")
}
}()

var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(sharedModelContainer)
.backgroundTask(.appRefresh("UpdateBadge")) {
print("background task")
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... n-app-file
Ответить

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

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

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

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

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