我们的应用还包含一个手表扩展功能。该应用程序的一部分是在任一设备上启动或停止进程,并通过发送事件以及发生日期通知其对应方。现在,我们也想使用自定义意图的Siri快捷方式来完成此操作。目前,我们没有运行watchOS 5的手表,因此只能在模拟器中测试。
我们正在尝试在会话开始时立即激活该会话。
我们知道在苹果的 文档 中提到了App扩展中可用API的限制,但这似乎不是问题所在,因为我们通过了WCSession.isSupported()的测试。
当然,将快捷方式运行在打开应用程序而不是后台可能会解决问题,但在我们的情况下,这将使快捷方式变得相当无用。
有人知道我们是否遗漏了使用WCSession的前提条件,还是根本不可能使用它?就像之前所说,我们目前只能在模拟器上进行测试。这可能是问题吗?
非常感谢任何帮助。
借鉴苹果公司SoupChef示例应用程序,我们成功地让快捷方式在两个设备上运行,并在后台执行所需的任务。但是,在激活WCSession以将消息发送到其他设备时,会出现错误
[WC] -[WCXPCManager onqueue_reconnect]_block_invoke error reconnecting to daemon due to NSXPCConnectionInterrupted
反复调用。
在尝试将消息发送到IntentHandler的其他设备之前,
func handle(intent: OurIntent, completion: @escaping (OurIntentResponse) -> Void)
我们正在尝试在会话开始时立即激活该会话。
func confirm(intent: OurIntent, completion: @escaping (OurIntentResponse) -> Void) {
let _ = Communicator.sharedInstance
// ...
}
Communicator被实现为一个单例,在其init方法中尝试激活会话,如下所示:
if WCSession.isSupported() {
let session = WCSession.default
session.delegate = self
session.activate() // fails with error mentioned above
}
我们知道在苹果的 文档 中提到了App扩展中可用API的限制,但这似乎不是问题所在,因为我们通过了WCSession.isSupported()的测试。
当然,将快捷方式运行在打开应用程序而不是后台可能会解决问题,但在我们的情况下,这将使快捷方式变得相当无用。
有人知道我们是否遗漏了使用WCSession的前提条件,还是根本不可能使用它?就像之前所说,我们目前只能在模拟器上进行测试。这可能是问题吗?
非常感谢任何帮助。
handler
方法中更早地激活会话,但是我遇到了与您相同的错误。您有任何更新吗? - croX