【问题标题】:How to handle any error during Homekit Pairing如何处理 Homekit 配对过程中的任何错误
【发布时间】:2016-10-07 11:48:34
【问题描述】:

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

func addAndSetupAccessories(completionHandler completion: (Error?) -> Void)

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

【问题讨论】:

  • 通过使用委托方法'func home(_ home:HMHome,didAdd附件:HMAccessory)'管理完成。添加附件后,将调用此方法。为此,我们需要将对象设置为 HMHome 的 HMHomeDelegate。
  • iOS 10.3 改变了这种行为。

标签: swift3 ios10


【解决方案1】:

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

当托管进程的视图控制器第二次调用viewDidAppear 时,请检查您是否设置了非桥接附件。如果不是,它要么被取消,要么以错误结束,Apple 的对话框已经处理了。

请注意,这在 iPad 上不起作用,因为它会显示一个弹出窗口,因此在关闭配对对话框时不会调用 viewDidAppear。我不确定是否有可能在 iPad 上找出该过程何时结束。

更新

iOS 10.3 完全改变了这种行为,现在在关闭配对对话框时会调用 addAndSetupAccessories 的完成处理程序(就像它应该开始的那样)。如果没有配对,回调将收到错误代码 23,HMError.operationCancelled

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

令任何人惊讶的是,它没有在任何发行说明中记录或提及。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 2012-07-13
    • 2012-03-23
    • 2015-06-02
    相关资源
    最近更新 更多