2012-11-08 2 views

Répondre

12

Lorsque vous déconnectez un périphérique avec cancelPeripheralConnection, la méthode de délégation didDisconnectPeripheral est appelée. Cependant, à partir d'iOS 6.0, l'appareil reste connecté pendant environ 40-50 secondes (ou plus), donc aucun didDiscoverPeripheral ne sera invoqué dans cette période. Si vous voulez le "découvrir" à nouveau, appelez simplement la méthode retrieveConnectedPeripherals et vous obtiendrez la référence dans didRetrieveConnectedPeripherals. Toutefois, la meilleure solution consiste à enregistrer l'UUID du périphérique et à l'utiliser pour se reconnecter à la méthode retrievePeripherals. Cela va appeler didRetrievePeripherals et vous pouvez vous reconnecter avec connectPeripheral. C'est le moyen le plus rapide de se reconnecter à un périphérique, aucune analyse n'est requise dans ce cas.

+0

Je suis à la recherche de la même chose avec EAAccessory Framework. C'est possible? Si oui, quelqu'un peut-il me dire le "comment"? Merci d'avance...:) –

2

Lorsque vous effectuez une numérisation avec scanForPeripheralsWithServices, elle ne vous avertit normalement qu'une seule fois pour une adresse de périphérique particulière. Vous pouvez modifier ceci pour signaler les doublons en spécifiant l'option CBCentralManagerScanOptionAllowDuplicatesKey. Ou vous pouvez demander à votre application de détecter que l'autre appareil est déconnecté à l'aide d'un délai d'expiration et de redémarrer votre analyse.

2

Dans CoreBluetooth, toute la gestion est effectuée par couche applicative. Dans votre cas, ce que je ferais est d'écouter l'événement de déconnexion que dans le même événement, reconnectez le périphérique. La méthode de connexion est peu coûteuse et vous assure de vous reconnecter à votre appareil lorsqu'il est de nouveau à portée.

Notez que si vous déconnectez explicitement le périphérique, vous avez reçu le même événement de déconnexion, mais vous ne devez pas appeler la méthode de reconnexion.

Questions connexes