Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在没有1309的情况下,是否可以在中央和外围模式下运行? 短版_Ios_Iphone_Objective C_Core Bluetooth - Fatal编程技术网

Ios 在没有1309的情况下,是否可以在中央和外围模式下运行? 短版

Ios 在没有1309的情况下,是否可以在中央和外围模式下运行? 短版,ios,iphone,objective-c,core-bluetooth,Ios,Iphone,Objective C,Core Bluetooth,有人知道CB iOS应用程序同时以中央模式和外围模式运行,并以中央模式连接到外围设备吗?一个实际的应用程序或某个存储库中的一个草图会很好 比较长的 在这两种模式下操作之前已被提及(),并且已提及didFailToConnectPeripheral中的Unknown Error:1309) 在这两种模式下运行的大量实验,以及与一名苹果员工关于TSI开启的对话让我确信,在同时使用中央和外围模式的应用程序中连接外围设备将导致1309,在与该外围设备的后续连接中(直到设备重新启动)再次发生的可能性非常高

有人知道CB iOS应用程序同时以中央模式和外围模式运行,并以中央模式连接到外围设备吗?一个实际的应用程序或某个存储库中的一个草图会很好

比较长的 在这两种模式下操作之前已被提及(),并且已提及
didFailToConnectPeripheral
中的
Unknown Error:1309

在这两种模式下运行的大量实验,以及与一名苹果员工关于TSI开启的对话让我确信,在同时使用中央和外围模式的应用程序中连接外围设备将导致1309,在与该外围设备的后续连接中(直到设备重新启动)再次发生的可能性非常高

苹果表示这是由于使用这两种模式时出现了死锁,尽管我在划分调用
CBCentralManager
cbperipheraldmanager
时非常小心,并确保它们的活动不会重叠


考虑到这个bug很少被提及,我有点好奇其他人是否已经设法避免了它,或者只是对这个用例不感兴趣。

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

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


另请注意,只有在需要时才为peripheralManager做广告是一种很好的做法。如果你需要它来不断地做广告,那么你还是可以去的。但如果你能避免,只要在需要的时候做广告就行了。在长时间的广告宣传(同时也做cbcentral的工作)中,我看到了一点额外的惰性。

1309在蓝牙中央和蓝牙外围设备背景模式下以这种方式运行时会发生。你做到了吗?给定外设的1309在第一次发生后最多100%的时间内会再次发生,因此明确地重新连接是没有帮助的-它只会再次发生。描述中的背景内容会更清楚,但我在今天进行更多测试时澄清了这一点。1309可以发生在前台,但只能发生在应用程序的生命周期中,该应用程序在执行中央/外围时曾一度处于后台。任务。你解决过你的1309问题吗?或者找到一些资源来处理它?