Как использовать Extended Runtime Session? - PullRequest
1 голос
/ 08 марта 2020

Я создаю приложение для Apple Watch, которое требует расширенного времени выполнения. Я реализовал это, написав ниже в HostingController, и он отлично работает в течение двух дней разработки. Но теперь это перестало работать. Приложение все еще работает, но нет никаких признаков того, что оно работает в фоновом режиме, и глифа бегущего человека на вершине Apple Watch больше нет. Как это может произойти?

Я не был уверен, что HostingController был правильным классом для расширения с помощью WKExtendedRuntimeSessionDelegate, поэтому я также попытался расширить ExtensionDelegate. Тот же результат: никаких признаков того, что я это реализовал. Отладка также не попадает в эти строки.

class HostingController: WKHostingController<AnyView>, WKExtendedRuntimeSessionDelegate {
    func extendedRuntimeSession(_ extendedRuntimeSession: WKExtendedRuntimeSession, didInvalidateWith reason: WKExtendedRuntimeSessionInvalidationReason, error: Error?) {
    // Track when your session starts.
    }

    func extendedRuntimeSessionDidStart(_ extendedRuntimeSession: WKExtendedRuntimeSession) {
    // Finish and clean up any tasks before the session ends.
    }

    func extendedRuntimeSessionWillExpire(_ extendedRuntimeSession: WKExtendedRuntimeSession) {
     // Track when your session ends.
        // Also handle errors here.
    }

    override var body: AnyView {
        return AnyView(ContentView().environmentObject(Settings()))
    }

    let runtimeSession = WKExtendedRuntimeSession();

    override init() {
        super.init()
        runtimeSession.delegate = self;
        runtimeSession.start();
    }
}
...