繁体   English   中英

为什么使用coreBluetooth connectPeripheral没有在IOS8中调用委托方法

[英]Why use coreBluetooth connectPeripheral did not call delegate methods in IOS8

我想在IOS8中使用CoreBluetooth.framework来实现数据传输,我确实在以下方法中发现了外设并尝试连接外设。

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
    NSLog(@"Discover name : %@", peripheral.name);
    [self.centralManager connectPeripheral:peripheral options:nil];
}

但它没有调用委托方法didFailToConnectPeripheraldidConnectPeripheral ,我对它有什么问题,是代码错误还是IOS8需要一些额外的东西? 怎么处理,谢谢!

这是我在github中的代码,我写了一个程序作为服务器,另一个是中央。

@Sj评论为我解决了这个问题,将其复制成答案以防万一有人会错过它:

您是否尝试将外围物体存放在ivar中然后连接到它? 即self.discoveredPeripheral = peripheral; [self.centralManager connectPeripheral:self.discoveredPeripheral options:nil];

我正在使用TemperatureSensor iOS示例应用程序 ,其中didDiscoverPeripheral没有调用。 通过参考Heart Rate Monitor Mac示例应用程序的流程。 请确保代码的运行顺序是:

1. centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue()];
2. - (void) centralManagerDidUpdateState:(CBCentralManager *)central
3. [centralManager scanForPeripheralsWithServices:... 

- (void) centralManager:(CBCentralManager *)central didDiscoverPeripheral:...将在之后调用。

仅调用connect方法一次并等待连接委托响应。 您发布的上述代码将更频繁地调用connect方法(当它发现外围设备时)

if(!self.detectedBLE){ [self.centralManager stopScan]; self.detectedBLE = peripheral; [self.centralManager connectPeripheral:self.detectedBLE options:nil]; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM