ios – CBPeripheralManager未启动
2020年02月18日
作者:佚名
我一直收到一个错误,说我的CBPeripheralManager没有开机,但在我的代码中,我觉得我实现了这一点.这是我的代码:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view,typically from a nib. // Start up the CBPeripheralManager _peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil]; // Start up the CBCentralManager // And somewhere to store the incoming data _data = [[NSMutableData alloc] init]; } /** Required protocol method. A full app should take care of all the possible states,* but we're just waiting for to know when the CBPeripheralManager is ready */ - (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral { if (peripheral.state == CBPeripheralManagerStatePoweredOn) { // We're in CBPeripheralManagerStatePoweredOn state... NSLog(@"self.peripheralManager powered on."); // ... so build our service. // Then the service CBMutableService *transferService = [[CBMutableService alloc] initWithType:[CBUUID UUIDWithString:TRANSFER_SERVICE_UUID] primary:YES]; // And add it to the peripheral manager [self.peripheralManager addService:transferService]; } }
然后我打电话给我的外围设备开始用IBAction按钮做广告:
- (IBAction)advertise:(id)sender { [self.peripheralManager startAdvertising:@{ CBAdvertisementDataServiceUUIDsKey : @[[CBUUID UUIDWithString:TRANSFER_SERVICE_UUID]] }]; [self.peripheralManager startAdvertising:@{ CBAdvertisementDataTxPowerLevelKey : @(YES)}]; }
解决方法
您需要将所有调用都包含在状态检查中的CBPeripheralManager中,以防止出现这些警告.由于您刚刚在不确定的时间调用广告,因此您需要确保您的外围设备管理器仍然处于供电状态并准备就绪.
- (IBAction)advertise:(id)sender { if(self.peripheralManager.state == CBPeripheralManagerStatePoweredOn) { //Now you can call advertise } }
以上是来客网为你收集整理的ios – CBPeripheralManager未启动全部内容,希望文章能够帮你解决ios – CBPeripheralManager未启动所遇到的程序开发问题。
如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。