在实现CBPeripheralManagerDelegate方法-peripheralManager:willRestoreState时,字典中的对象传递给CBPeripheralManagerRestoredStateServicesKey键的CBPeripheralManagerRestoredStateServicesKey文档的方法:
恢复有关服务的所有信息,包括任何包含的服务、特征、特征描述符和订阅中心。
从返回的CBMutableServices数组中,我可以循环遍历服务,然后循环每个服务的特征。然而,我不知道如何访问订阅中心,有人能帮忙吗?
下面是我使用的通用代码,它将值赋值给局部变量等等:
- (void)peripheralManager:(CBPeripheralManager *)peripheral willRestoreState:(NSDictionary *)dict
{
advertisementData = dict[CBPeripheralManagerRestoredStateAdvertisementDataKey];
NSArray *services = dict[CBPeripheralManagerRestoredStateServicesKey];
for (CBMutableService *service in services) {
mainService = service;
for (CBMutableCharacteristic *charactristic in mainService.characteristics) {
if ([charactristic.UUID.UUIDString isEqualToString:AUTH_UUID]) {
authCharacteristic = charactristic;
} else if ([charactristic.UUID.UUIDString isEqualToString:CENTRAL_NAME_UUID]) {
receiveDeviceNameCharacteristic = charactristic;
}
}
// How would I reinstantiate subscribed centrals?
// subscribedCentrals = ?
[manager addService:mainService];
}
}发布于 2014-10-27 01:09:59
您可以从下标中心对象中检索CBMutableCharacteristic -
所以,就像-
NSMutableSet *centrals=[NSMutableSet new];
for (CBMutableCharacteristic *charactristic in mainService.characteristics) {
if ([charactristic.UUID.UUIDString isEqualToString:AUTH_UUID]) {
authCharacteristic = charactristic;
} else if ([charactristic.UUID.UUIDString isEqualToString:CENTRAL_NAME_UUID]) {
receiveDeviceNameCharacteristic = charactristic;
}
for (CBCentral *central in characteristic.subscribedCentrals) {
[centrals addObject:central];
}
}https://stackoverflow.com/questions/26579255
复制相似问题