AppleWatch短时间后台保活

238 阅读1分钟

apple提供的api:

WKExtendedRuntimeSession

设置下这里的类型。

切记,目前4种类型的区别:

根据自己的需求来进行选择。

最后上代码:

import Foundation

import WatchKit

final class ExtendedRuntimeSessionManager: NSObject, WKExtendedRuntimeSessionDelegate {

// MARK: - Stored properties

private var session: WKExtendedRuntimeSession?

// MARK: - Inits

override init() {

super.init()

}

// MARK: - Functions

func startSession() {

guard session?.state != .running else { return }

session = WKExtendedRuntimeSession()

session?.delegate = self

session?.start()

print("Session started")

}

func stopSession() {

guard session?.state != .invalid else { return }

session?.invalidate()

print("Session stopped")

}

// MARK: - Delegate functions

func extendedRuntimeSessionDidStart(_ extendedRuntimeSession: WKExtendedRuntimeSession) {}

func extendedRuntimeSessionWillExpire(_ extendedRuntimeSession: WKExtendedRuntimeSession) {}

func extendedRuntimeSession(_ extendedRuntimeSession: WKExtendedRuntimeSession, didInvalidateWith reason: WKExtendedRuntimeSessionInvalidationReason, error: (any Error)?) {

print("Session invalidated with reason: \(reason.rawValue), error: \(error?.localizedDescription ?? "No error")")

}

}