如何在Homekit配对期间处理任何错误

时间:2016-10-07 11:48:35

标签: swift3 ios10

如何在swift 3中使用给定的方法。

func addAndSetupAccessories(completionHandler completion :(错误?) - > Void)

我观察到,尽管HomeKit设置页面(iOS 10中的Homekit配件配对的初始页面)在前面并且配件配对过程尚未结束,但立即调用了完成处理程序。如果是这种情况,如何在设置过程完成后调用任何操作?如果设置过程结束了怎么办?

1 个答案:

答案 0 :(得分:0)

处理它的唯一方法是在调用HMHomeDelegate之前为目标HMHome对象分配addAndSetupAccessories并跟踪添加的附件。该对话框仅允许一次设置一个附件,因此您最多可以获得一个非桥接附件,可能还有零个或多个桥接附件。

当托管该进程的视图控制器第二次调用viewDidAppear时,请检查是否已设置非桥接附件。如果没有,则取消或完成错误,Apple的对话框已经处理完毕。

请注意这不适用于iPad ,因为它会显示一个弹出窗口,因此当配对对话框被取消时,viewDidAppear不会被调用。我不确定是否可以找到iPad上的流程何时结束。

<强>更新

iOS 10.3完全改变了这种行为,现在在配对对话框关闭时调用了addAndSetupAccessories的完成处理程序(本来应该是这样)。如果没有配对,则回调将出现代码为23的错误HMError.operationCancelled

您仍然需要通过HMHomeDelegate回调跟踪添加的附件,但是设置后处理应该从viewWillAppear转移到addAndSetupAccessories回调。

在任何发行说明的任何地方都没有记录或提及任何人的意外。