iOS CoreBluetooth : centralManager:didConnectPeripheral / didFailToConnectPeripheral: pas appelé

Je suis en tirant mes cheveux de ces problèmes. Je suis en train de se connecter à BLE appareils, ne peut pas voir ce que j'ai fait de mal dans mon code ci-dessous.

- (void)viewDidLoad {
[super viewDidLoad];
//Do any additional setup after loading the view, typically from a nib.
_cm = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
//Dispose of any resources that can be recreated.
}
+ (NSString*)UUIDString:(CFUUIDRef)uuid {
CFStringRef string = CFUUIDCreateString(NULL, uuid);
return (__bridge_transfer NSString*)string;
}
- (void)centralManagerDidUpdateState:(CBCentralManager *)central {
if (central.state == CBCentralManagerStatePoweredOn) {
[self scanForPeripherals];
}
}
- (void)centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary *)advertisementData
RSSI:(NSNumber *)RSSI {
//   NSLog(@"Received peripheral : \n%@", peripheral);
//   NSLog(@"Adv data : %@", advertisementData);
[peripheral setDelegate:self];
[central connectPeripheral:peripheral options:nil];
[peripheral readRSSI];
}
- (int)scanForPeripherals {
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:NO], CBCentralManagerScanOptionAllowDuplicatesKey,
nil];
[_cm scanForPeripheralsWithServices:nil options:options];
return 0;
}
- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral {
NSLog(@"didConnectPeripheral");
}
- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error {
NSLog(@"didDisconnectPeripheral");
}
- (void)centralManager:(CBCentralManager *)central didFailToConnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error {
NSLog(@"failed to connect");
}
- (void)peripheral:(CBPeripheral *)peripheral didReadRSSI:(NSNumber *)RSSI error:(NSError *)error {
NSLog(@"didReadRSSI");
}

Ces appareils ne sont pas de mon propre chef. Je ne sais pas sa proximité de l'UUID, mais autant que je sache, Il ne sera pas nécessaire de se connecter via CoreBluetooth droit?

Tous les périphériques sont détectés dans didDiscoverPeripheral:, dans le sélecteur j'ai essayé de les relier entre eux. Mais il n'y a rien qui vient après.

Suis-je attendre un dialogue avec l'Appariement Demande de Mot de passe quand j'ai appelé pour didDiscoverPeripheral:?
Si oui, je ne vois pas de dialogue, pourquoi est-ce?

De pomme de documents, Il a clairement déclaré qu'après avoir essayé de se connecter à un périphérique, vous devriez obtenir ce que l'on appelle soit didConnectPeripheral ou didFailToConnectPeripher mais j'en ai trouvé aucun.

Toute pensée? J'ai essayé pendant presque une semaine maintenant.
Apprécier chaque aide, merci.

  • Avez-vous un appel à didDiscoverPeripheral? Avez-vous essayé de supprimer l'appel à [peripheral readRSSI] qui suit immédiatement votre demande de connexion? Vous ne devriez pas question que la demande jusqu'à ce que vous êtes connecté. J'ai toujours penser que les personnes essayez le gratuitement LightBlue de l'app store comme un test pour voir si leur appareil est de la publicité et est connectable
  • Oui j'ai essayé, Il y avait la première version de ce code, il est, mais ne rien faire, à découvrir et à essayer de se connecter, mais après connectPeripheral exécuté rien ne se passe.
  • Essayez LightBlue - de cette façon, vous pouvez au moins confirmer que le matériel est connectable. Aussi essayez de stocker les périphériques que vous connectez dans une propriété de sorte qu'il n'est pas sorti
  • Essayé, Tous d'entre eux montre dans LightBlue, Aucun service n'a été affichée pour tous les périphériques. Il y en a 2 Le Estimotes BLE et les 2 autres de mes pays personnalisée BLE*. S'interrogeant sur la estimotes BLE au succès de la connexion, mais après quelques secondes, LightBlue dit "Déconnecté d'alerte", et Il y a un texte en rouge, en disant: "les Données sont obsolètes", pour un autre 2 appareils interrogatoire de divulguer une autre page comme le estimotes et rien de plus
  • Peut aider: stackoverflow.com/questions/28167804/...
InformationsquelleAutor Mysteltainn | 2014-10-15