J'ai une application développée à l'aide de CoreBluetooth pour communiquer entre un iPad (centrale) et iPhone (périphérique). J'ai un service qui a deux caractéristiques. J'ai une Nexus 7 en cours d'exécution la plus récente d'Android 4.3 avec BTLE de soutien. Android est un peu tard pour sauter sur la BTLE train en marche, mais il semble qu'ils approchent d'elle, de la même manière iOS fait, d'où d'abord ils prennent uniquement en charge agissant comme un central à la périphérie de la mode à venir dans une version ultérieure. Je peux charger l'échantillon Android BTLE application et accédez à proximité des périphériques. Avec mon iPhone la publicité comme un périphérique je peux voir la valeur de CBAdvertisementDataLocalNameKey dans la liste des périphériques à proximité sur le côté Android. Je peux me connecter à l'iPhone et le symbole Bluetooth passe du gris clair au noir quand la connexion est faite. La connexion dure toujours exactement 10 secondes puis se déconnecte. Sur Android, je suis censé voir une liste des services disponibles et des caractéristiques apparaissent immédiatement lors de la connexion. J'ai prouvé le code Android est réglé correctement, parce que je peux connnect à la TI CC2541DK-CAPTEUR de matériel que j'ai et de tous les services et les caractéristiques sont inscrites sur se connecter à elle.
J'ai passé les derniers jours de résoudre le problème, sans succès. Le problème est que je ne peut pas déterminer le périphérique a rencontré une erreur et ainsi à l'origine de la déconnexion. Il n'y a pas de rappels de CBPeripheralManagerDelegate au cours de la phase de connexion ou de services phase de découverte, donc je n'ai aucune idée à quel point une erreur se produit (si l'erreur est sur l'iOS côté). Sur le côté Android, une méthode est appelée pour initier la découverte de service, toutefois, leur rappel "onServicesDiscovered" n'est jamais appelé, ce qui laisse perplexe. Est-il possible que je peux creuser dans les entrailles de la BTLE de la communication sur l'iOS côté pour voir ce qu'il se passe et de déterminer ce que l'erreur est de prendre la place?