Автоматически подключаться к устройству Bluetooth без сопряжения
Можно ли настроить Bluetooth-устройство таким образом, чтобы мое приложение автоматически подключалось к нему, когда рядом - без сопряжения и т. д.?
Устройство будет изготовлено на заказ, и приложение будет написано мной, сначала я должен определить некоторые спецификации. Было бы замечательно, если бы на устройстве была опция, которая, как только она была рядом с моим (открытым) приложением, автоматически подключалась к обоим без какого-либо процесса установки.
1 ответ
Что вы можете. Если устройство будет выполнено на заказ и вы знаете его характеристики
Код ниже (TRANSFER_SERVICE_UUID - GUID вашего устройства):
_centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
- (void)centralManagerDidUpdateState:(CBCentralManager *)central {
// You should test all scenarios
if (central.state != CBCentralManagerStatePoweredOn) {
[self stop];
return;
}
if (central.state == CBCentralManagerStatePoweredOn) {
// Scan for devices
[_centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:TRANSFER_SERVICE_UUID]] options:@{ CBCentralManagerScanOptionAllowDuplicatesKey : @YES }];
NSLog(@"Scanning started");
if(_delegate)
{
if([_delegate respondsToSelector:@selector(CB_changedStatus:message:)])
{
[_delegate CB_changedStatus:CBManagerMessage_ScanningStarted message:@"Scanning started"];
}
}
}
}
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
NSLog(@"Discovered %@ at %@", peripheral.name, RSSI);
if (_discoveredPeripheral != peripheral) {
// Save a local copy of the peripheral, so CoreBluetooth doesn't get rid of it
_discoveredPeripheral = peripheral;
// And connect
NSLog(@"Connecting to peripheral %@", peripheral);
if(_delegate)
{
if([_delegate respondsToSelector:@selector(CB_changedStatus:message:)])
{
[_delegate CB_changedStatus:CBManagerMessage_ConnectingToPeripheral message:[NSString stringWithFormat:@"Connecting to peripheral %@", peripheral]];
}
}
[_centralManager connectPeripheral:peripheral options:nil];
}
}