¿Es posible operar tanto en el modo central como en el periférico sin 1309?

Version corta

¿Alguien consciente de una aplicación CB iOS que funciona tanto en modo central como periférico, y en su function de central, se conecta a los periféricos? Una aplicación real o un boceto en un repository en algún lugar sería genial.

Más

El funcionamiento en ambos modos se ha abordado en SO antes ( aquí ), y se ha mencionado un Unknown Error: 1309 en didFailToConnectPeripheral ( aquí ).

Los extensos experimentos que funcionan en ambos modos, así como una conversación con un empleado de Apple sobre una TSI abierta, me han convencido de que la connection a un periférico en una aplicación que usa modos central y periférico resultará en un 1309, que tiene un muy alto probabilidad de volver a ocurrir en conexiones subsiguientes a ese periférico (hasta que se reinicie el dispositivo).

Apple dijo que esto se debió a un punto muerto causado al usar ambos modos, aunque he sido extremadamente cuidadoso en particionar llamadas a CBCentralManager vs. CBPeripheralManager , y asegurando que sus actividades no se superpongan.

Dado que el error no se menciona muy a menudo, tengo algo de curiosidad acerca de si otras personas han logrado evitarlo o simplemente no están interesados ​​en este caso de uso.

Es cien por ciento posible y, en realidad, es bastante sencillo. Simplemente no ejecute ambos en el hilo principal. He lanzado varias aplicaciones que usan ambas y nunca he encontrado ese error personalmente.

Y si recibió the didFailToConnect: simplemente guarde el UUID (identificador ahora) del periférico, recupere el periférico nuevamente y llame a connect. Bueno para ir.

Además, es una buena práctica anunciar el periférico Manager cuando sea necesario. Si lo necesita para anunciar constantemente, entonces aún estará listo. Pero si puede evitarlo, simplemente anuncie cuando lo necesite. He visto un poco de lentitud extra cuando publico por largos períodos (mientras también hago trabajo central).