如何在swift 3中使用给定的方法。
func addAndSetupAccessories(completionHandler completion :(错误?) - > Void)
我观察到,尽管HomeKit设置页面(iOS 10中的Homekit配件配对的初始页面)在前面并且配件配对过程尚未结束,但立即调用了完成处理程序。如果是这种情况,如何在设置过程完成后调用任何操作?如果设置过程结束了怎么办?
答案 0 :(得分:0)
处理它的唯一方法是在调用HMHomeDelegate
之前为目标HMHome
对象分配addAndSetupAccessories
并跟踪添加的附件。该对话框仅允许一次设置一个附件,因此您最多可以获得一个非桥接附件,可能还有零个或多个桥接附件。
当托管该进程的视图控制器第二次调用viewDidAppear
时,请检查是否已设置非桥接附件。如果没有,则取消或完成错误,Apple的对话框已经处理完毕。
请注意这不适用于iPad ,因为它会显示一个弹出窗口,因此当配对对话框被取消时,viewDidAppear
不会被调用。我不确定是否可以找到iPad上的流程何时结束。
<强>更新强>
iOS 10.3完全改变了这种行为,现在在配对对话框关闭时调用了addAndSetupAccessories
的完成处理程序(本来应该是这样)。如果没有配对,则回调将出现代码为23的错误HMError.operationCancelled
。
您仍然需要通过HMHomeDelegate
回调跟踪添加的附件,但是设置后处理应该从viewWillAppear
转移到addAndSetupAccessories
回调。
在任何发行说明的任何地方都没有记录或提及任何人的意外。