Скубя си косата от тези проблеми. Опитвам се да свържа с BLE устройства, но не виждам какво съм направил грешно в кода си по-долу.
- (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");
}
Тези устройства не са мои. Не знам неговия UUID за близост, но доколкото знам, няма да е необходим при свързване чрез CoreBluetooth, нали?
Всички устройства са открити в didDiscoverPeripheral:
, в селектора се опитах да ги свържа. Но след това нищо не идва.
Трябва ли да очаквам диалогов прозорец с искане за парола за сдвояване, когато се обадя на didDiscoverPeripheral:
? Ако е така, не виждам никакъв диалог, защо е така?
От документите на Apple ясно се посочва, че след като се опитате да се свържете с устройство, трябва да получите обаждане до didConnectPeripheral
или didFailToConnectPeripher
, но не получих нито едно.
някакви мисли? Опитвам се вече почти седмица. Оценявам всяка помощ, благодаря.
didDiscoverPeripheral
? Опитахте ли да премахнете обаждането до[peripheral readRSSI]
, което веднага следва вашата заявка за свързване? Не трябва да подавате тази заявка, докато не сте свързани. Винаги предлагам на хората да изпробват безплатното приложение LightBlue от магазина за приложения като тест, за да видят дали устройството им рекламира и дали може да се свърже - person Paulw11   schedule 15.10.2014connectPeripheral
нищо не се случва. - person Mysteltainn   schedule 15.10.2014