精简版

有人知道CB iOS应用程序既可在中央模式又可在外围模式下运行,并且以其中央角色连接到外围设备?某个地方的存储库中的实际应用程序或草图会很棒。

长一点

在(here)之前,已经在SO上介绍了两种模式下的操作,并且已经提到了Unknown Error: 1309中的didFailToConnectPeripheral(here)。

在这两种模式下进行的大量实验以及与苹果公司员工就TSI开启进行的对话使我确信,在同时使用中央模式和外围模式的应用程序中连接外围设备将导致1309,这具有很高的在与该外围设备的后续连接上再次发生的概率(直到重新启动设备)。

苹果公司表示,这是由于在使用两种模式时都出现了死锁,尽管我在将调用划分为CBCentralManagerCBPeripheralManager时非常谨慎,并确保它们的事件不会重叠。

鉴于根本没有经常提到该错误,我对其他人是否已设法避免该错误,或​​者对此用例不感兴趣感到有些好奇。

最佳答案

这是百分百可能的,而且实际上非常简单。只是不要同时在主线程上运行。我已经发布了同时使用这两个应用程序的应用程序,但我个人从未遇到过该错误。

如果确实收到了didFailToConnect:,则只需保存外围设备的UUID(现在为标识符),再次检索外围设备,然后调用connect。好去。

另外请注意,良好的做法是仅在需要时播发外围设备管理器。如果您需要它来不断做广告,那么您仍然会很好。但是,如果可以避免,只需在需要时做广告即可。长时间做广告时(同时也做中心工作),我已经看到了一些额外的呆滞现象。

关于ios - 如果没有1309,是否可以在中央和外围模式下运行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22185012/

10-12 06:19