CoreBluetooth et Wifi interférence

Je suis vraiment coincé avec un problème, donc, inutile de le dire, j'ai besoin de votre aide. J'utilise CoreBluetooth pour communiquer entre deux iDevices, c'est la même application, fonctionnant en tant que centrale sur un périphérique et en tant que périphérique sur l'autre périphérique. Dans certains cas, la centrale perd la connection au périphérique avec l'erreur suivante:

Error Domain=CBErrorDomain Code=10 "The connection has failed unexpectedly." UserInfo=0x14ee8fe0 {NSLocalizedDescription=The connection has failed unexpectedly.} 

Dans ce cas particulier, le périphérique était un iPad 4 et le central était un iPad mini. J'ai repéré le problème et il s'avère, une fois que je rencontre ce problème, le problème persistera chaque fois que je me connecte, indépendamment du redémarrage de l'application ou même le bluetooth des deux côtés, TOUTEFOIS, la partie intéressante est, si je l'éteins Wifi sur l'appareil central, la connection n'est plus temporisée.

Avez-vous des suggestions, des solutions de contournement? Les deux appareils exécutent iOS 7.1.1

C'est un problème bien connu, et il a une solution qui est confirmée pour fonctionner pour le côté Mac.

 sudo defaults write /Library/Preferences/com.apple.airport.bt.plist bluetoothCoexMgmt Hybrid 

Après avoir exécuté ce script, le problème disparaîtra et les connections BT restront stables.

Et voici l'explication:

Context: après beaucoup d'espionnage et de grattage, voici ce que j'ai trouvé: le problème ici semble être que le système n'utilise pas le même mode de coexistance Bluetooth / Airport pour BLE que pour BT Classic. Un signe révélateur: si vous avez des périphériques BT Classic connectés et actifs, le bogue ne sera pas reproduit (ni pour le périphérique Classic ni pour tout périphérique BLE connecté). Au moment où le périphérique Classic se déconnecte, les repros de bogues (c'est-à-dire toutes les connections BLE sont également supprimées).

De plus, j'ai pu find une reference dans la table de symboles d'un agent de configuration d'aéroport à un paramètre de priorité pour le mode de coexistance. Si vous réglez le mode manuellement comme ci-dessus sur 'hybride' (le même mode que celui habituellement utilisé lorsqu'un périphérique classique est connecté), le bug n'est plus reprosé.

Tous les crédits vont à William Henderson de Knock pour ce tour.

Il y a eu des cas où le même effet était perçu sur les appareils iOS. Cela arrive parfois lorsque les connections Core Bluetooth ne sont pas stables. Parfois, cela peut rendre la connection WiFi inutilisable. Mais c'est difficile à reproduire, du less je n'ai pas pu le faire, et votre question ne le concerne pas non plus.