我在使用 WKExtendedRuntimeSession 时遇到了一些麻烦。
- 我已经
WKExtendedRuntimeSessionDelegate
在我的 ExtensionDelegate中设置了 - 当应用程序处于活动状态时,我开始会话
.start()
- 我通过使用停止会话
session.invalidate()
当我再次启动它时,我收到以下错误:
-[WKExtendedRuntimeSession _start]:308: Unable to start sessions because state == WKExtendedRuntimeSessionStateInvalid. notifying delegate <MYAPP_Extension.ExtensionDelegate: 0x17e663d0>. Error is (null)
代码
我的扩展代表
var session = WKExtendedRuntimeSession()
class ExtensionDelegate: NSObject, WKExtensionDelegate, WKExtendedRuntimeSessionDelegate {
func extendedRuntimeSession(_ extendedRuntimeSession: WKExtendedRuntimeSession, didInvalidateWith reason: WKExtendedRuntimeSessionInvalidationReason, error: Error?) {
print("Session stopped at", Date())
}
func extendedRuntimeSessionDidStart(_ extendedRuntimeSession: WKExtendedRuntimeSession) {
print("Session started at", Date())
}
func extendedRuntimeSessionWillExpire(_ extendedRuntimeSession: WKExtendedRuntimeSession) {
}
func applicationDidBecomeActive() {
session.delegate = self
}
我的开始发生在.onAppear(perform:{ session.start() })
取消:
func cancelNow() {
self.timer.connect().cancel()
session.invalidate()
return
}