没有1309,是否可以在中央和外围模式下运行?

时间:2014-03-04 23:00:02

标签: ios iphone objective-c core-bluetooth

短版

任何人都知道CB iOS应用程序在中央和外围模式下运行,并且作为中心,连接到外围设备?某个存储库中的实际应用程序或草图会很棒。

两种模式下的操作都已在SO(here)之前进行了操作,Unknown Error: 1309中的didFailToConnectPeripheral已被提及(here)。

在这两种模式下进行的大量实验,以及与Apple员工就开放的TSI进行的对话使我确信在使用中央和外围模式的应用程序中连接到外围设备将导致1309,其中在与该外围设备的后续连接上重复出现的可能性非常高(直到设备重新启动)。

Apple说这是由于在使用这两种模式时造成的死锁,但我一直非常小心地将调用分区为CBCentralManagerCBPeripheralManager,并确保其活动不重叠。

鉴于这个bug根本没有被提及,我对其他人是否设法避免它或者对这个用例不感兴趣感到好奇。

1 个答案:

答案 0 :(得分:0)

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

如果您确实收到didFailToConnect:,只需保存外围设备的UUID(标识符),再次检索外围设备,然后呼叫连接。很高兴。

另外注意,最好只在需要时通告外围设备管理器。如果你需要它不断做广告那么你仍然会很好。但如果你可以避免它,只需在需要时做广告。我在长时间做广告时看到了一点额外的迟缓(同时也做了中心工作)。