watchOS中的扩展运行时会话在首次运行后停止工作

时间:2020-05-07 09:32:01

标签: delegates swiftui watchos watchos-6

我在WKExtendedRuntimeSession上遇到了一些麻烦。

  1. 我已经在我的ExtensionDelegate中设置了 $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => "connect/checksession", CURLOPT_RETURNTRANSFER => 1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language: en-US,en;q=0.5", "Cache-Control: no-cache", "Connection: keep-alive", "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0", "client_id": "clientid" ), ]); $resp = curl_exec($curl); print_r($resp); curl_close($curl);
  2. 当我使用WKExtendedRuntimeSessionDelegate激活应用程序时,我开始了会话
  3. 我通过使用.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() })

1 个答案:

答案 0 :(得分:0)

根据Apple文档: 在调用invalidate()之后,您将无法再运行会话。而是创建并开始一个新会话。

https://developer.apple.com/documentation/watchkit/using_extended_runtime_sessions

这样做:

public override fun onResum() {
            super.onResum()
         list.remove(position);
         recycler.removeViewAt(position);
         mAdapter.notifyItemRemoved(position);                 
         mAdapter.notifyItemRangeChanged(position, list.size());
        }

希望这会有所帮助。

相关问题