我创建了一个蓝牙外设管理器。我正在使用[self.peripheralManager addService:myService]向该外设管理器添加一些服务。
对于iOS7.0我得到这个方法的回调 - (void)peripheralManager:(CBPeripheralManager *)peripheral didAddService:(CBService *)service error:(NSError *)error
但对于iOS8.0,我没有得到任何相同方法的回调,我无法建立连接。
以下是我遵循的步骤:
2.使用创建服务 myService = [[CBMutableService alloc] initWithType:[CBUUID UUIDWithString:@" AAAA"] primary:YES];
使用创建特征 myCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:@" BBBB"]属性:CBCharacteristicPropertyIndicate值:nil权限:CBAttributePermissionsReadable];
使用此功能添加此服务 myService.characteristics =特色
使用将此服务添加到外围设备管理器 [peripheralManager addService:myService];
上述步骤的回调发生在
中在iOS8中,我们没有收到此回调。
外围设备管理器的更新状态代码如下所示。
-(void) peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral{
NSLog(@"Changed State : %d", peripheral.state);
if (peripheral.state != CBPeripheralManagerStatePoweredOn) {
[self deviceDisconnected];
return;
}
}
我使用以下方法添加服务:
[self.peripheralManager addService:myService];
这种方法在iOS8.0中是否已弃用,或者此错误可能是由于其他一些原因造成的?
答案 0 :(得分:8)
@Paulw在评论中正确回答了这个问题。以下是答案
在蓝牙硬件初始化(开机状态)之前ios7允许的操作之间的ios7和ios8之间有变化,并发出警告。在ios8中它只是失败了。
因此,在添加任何服务之前,我们必须等待peripheralManagerDidUpdateState:
回调。