«Выполнение буфера команд было прервано из-за ошибки во время выполнения» в приложении Apple Watch? - PullRequest
0 голосов
/ 19 января 2020

2020-01-18 18:03:02.316685-0500 Watch Extension[529:813076] Execution of the command buffer was aborted due to an error during execution. Insufficient Permission (to submit GPU work from background) (IOAF code 6)

Я начал печатать это консольное сообщение при тестировании 3 приложений HealthKit, но не могу понять, с чем оно связано, и предыдущие вопросы SO касались только iPhone. В частности, кажется, что я могу запустить его, когда я имитирую движения тренировки (например, бег). Есть идеи, что может вызвать это сообщение на Watch?

РЕДАКТИРОВАТЬ: Я считаю, что проблема в SKScene, который я использую, чтобы показать анимацию в приложении для часов. Когда я комментирую ниже, я больше не вижу предупреждений консоли:

 @IBOutlet var spriteKitScene1: WKInterfaceSKScene!
    @IBOutlet var spriteKitScene2: WKInterfaceSKScene!

1 Ответ

1 голос
/ 30 января 2020

HealthKit должен использовать Metal, или что-то в вашем приложении. Metal не допускает фоновую обработку.

Чтобы избавиться от предупреждения, вам потребуется приостановить или приостановить любые процессы, использующие Metal.

В вашем файле AppDelegate.swift вы можете реализовать эти два метода:

func applicationWillResignActive(_ application: UIApplication) {
    //Pause or suspend any operations using Metal
}

func applicationDidBecomeActive(_ application: UIApplication) {
    //Resume or start operations using Metal
}

Другой способ запуска / остановки операций при вводе фона / переднего плана - с помощью уведомлений. Если вы предпочитаете этот шаблон, я опубликую примеры.

Обратите внимание, что вы видите предупреждение о том, что обработка металла не происходит в фоновом режиме. Если ваше приложение работает должным образом, вы можете проигнорировать предупреждение.

...