我创建了一个蓝牙外设管理器,使用 [self.peripheralManager addService:myService] 添加了一些服务。
对于iOS7.0,我可以得到该方法的回调 - (void)peripheralManager:(CBPeripheralManager *)peripheral didAddService:(CBService *)service error:(NSError *)error。
但是,在iOS8.0上,我们没有收到相同方法的任何回调,也无法建立连接。
下面是我所遵循的步骤:
1. 使用[[CBPeripheralManager alloc] initWithDelegate: self queue:nil options:@{CBPeripheralManagerOptionShowPowerAlertKey: @YES}]创建外设管理器。
2. 使用myService = [[CBMutableService alloc] initWithType:[CBUUID UUIDWithString:@"AAAA"] primary:YES]创建服务。
3. 使用myCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:@"BBBB"] properties:CBCharacteristicPropertyIndicate value:nil permissions:CBAttributePermissionsReadable]创建特征。
4. 使用myService.characteristics = characteristic将该特征添加到服务中。
5. 使用[peripheralManager addService:myService]将该服务添加到外设管理器中。
6. 这个步骤的回调出现在(void)peripheralManager:(CBPeripheralManager *)peripheral didAddService:(CBService *)service error:(NSError *)error中。
7. 在iOS8中,我们没有收到这个回调。
下面是外设管理器更新状态的代码。
对于iOS7.0,我可以得到该方法的回调 - (void)peripheralManager:(CBPeripheralManager *)peripheral didAddService:(CBService *)service error:(NSError *)error。
但是,在iOS8.0上,我们没有收到相同方法的任何回调,也无法建立连接。
下面是我所遵循的步骤:
1. 使用[[CBPeripheralManager alloc] initWithDelegate: self queue:nil options:@{CBPeripheralManagerOptionShowPowerAlertKey: @YES}]创建外设管理器。
2. 使用myService = [[CBMutableService alloc] initWithType:[CBUUID UUIDWithString:@"AAAA"] primary:YES]创建服务。
3. 使用myCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:@"BBBB"] properties:CBCharacteristicPropertyIndicate value:nil permissions:CBAttributePermissionsReadable]创建特征。
4. 使用myService.characteristics = characteristic将该特征添加到服务中。
5. 使用[peripheralManager addService:myService]将该服务添加到外设管理器中。
6. 这个步骤的回调出现在(void)peripheralManager:(CBPeripheralManager *)peripheral didAddService:(CBService *)service error:(NSError *)error中。
7. 在iOS8中,我们没有收到这个回调。
下面是外设管理器更新状态的代码。
-(void) peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral{
NSLog(@"Changed State : %d", peripheral.state);
if (peripheral.state != CBPeripheralManagerStatePoweredOn) {
[self deviceDisconnected];
return;
}
}
我正在使用以下方法添加服务:
[self.peripheralManager addService:myService];
这种方法在iOS8.0中是否已被弃用,或者可能是由其他原因引起的错误?
peripheralManagerDidUpdateState:
的代码以及如何调用addService
函数。 - Paulw11addService
?是在deviceDisconnected
中吗?也就是说,在你处于已启动状态之后? - Paulw11