Comunicación entre iOS y Android con Bluetooth LE

Tengo una aplicación que funciona con CoreBluetooth para comunicarme entre un iPad (central) y un iPhone (periférico). Tengo un servicio que tiene dos características. Tengo un Nexus 7 que ejecuta el último Android 4.3 con soporte BTLE. Android llega un poco tarde para subirse al carro de BTLE, pero parece que se están acercando de manera similar a como lo hizo iOS, donde inicialmente solo admiten el hecho de actuar como central con el modo periférico en una versión posterior. Puedo cargar la aplicación de Android BTLE de muestra y buscar periféricos cercanos. Con la publicidad de mi iPhone como periférico, puedo ver el valor de CBAdvertisementDataLocalNameKey en la lista de periféricos cercanos en el lado de Android. Puedo conectarme al iPhone y el símbolo de Bluetooth cambia de gris claro a negro cuando se realiza la conexión. La conexión siempre dura exactamente 10 segundos y luego se desconecta. En el lado de Android, se supone que debo ver una lista de servicios y características disponibles inmediatamente después de la conexión. He comprobado que el código de Android está configurado correctamente porque puedo conectarlo al hardware TI CC2541DK-SENSOR que tengo y todos los servicios y características se enumeran al conectarlo.

He pasado los últimos días solucionando el problema sin éxito. El problema es que no puedo determinar qué dispositivo está experimentando un error y, por lo tanto, está causando la desconexión. No hay devoluciones de llamada desde CBPeripheralManagerDelegate durante la fase de conexión o la fase de descubrimiento del servicio, por lo que no tengo idea en qué punto se produce un error (si el error está en el lado de iOS). En el lado de Android, se llama a un método para iniciar el descubrimiento del servicio, sin embargo, su devolución de llamada "onServicesDiscovered" nunca se llama, lo que es desconcertante. ¿Hay alguna manera de poder profundizar en las entrañas de la comunicación BTLE en el lado de iOS para ver qué está pasando y determinar qué error está ocurriendo?

Respuestas a la pregunta(6)

Su respuesta a la pregunta