大佬教程收集整理的这篇文章主要介绍了从CBCentralManagerDelegate回调以在IOS8上检索CBPeripheral,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当我连接到CBPeripheral时,我在CoreData中保存UUIDString以在我重新启动应用程序时检索此外围设备.
func retrievePeripheralsWithIdentifiers(identifiers: [AnyObject]!){ let data = self.centralManager.retrievePeripheralsWithIdentifiers(identifiers) println("Data retrieved: \(data)") for peripheral in data as [CBPeripheral] { println("Peripheral : \(peripheral)") peripheral.delegate = self centralManager.connectPeripheral(peripheral,options: nil) } }
这就是我所拥有的:
Data retrieved: [<CBPeripheral: 0x1669fcd0,identifier = XXXXX,name = Peripheral1,state = disconnected>] Peripheral : <CBPeripheral: 0x1669fcd0,state = disconnected>
我可以找到我的一个外围没有任何问题.但是当我调用“centralManager.connectPeripheral(peripheral,options:nil)”这一行时,我没有任何回复.
这些方法
func centralManager(central: CBCentralManager!,didRetrievePeripherals peripherals: [AnyObject]!) func centralManager(central: CBCentralManager!,didConnectPeripheral peripheral: CBPeripheral!) func centralManager(central: CBCentralManager!,didFailToConnectPeripheral peripheral: CBPeripheral!,error: NSError!)
没有回电让我知道什么是错的.@R_741_9447@找到好的外设,但我无法连接到它.
但是,当我扫描时,我有相同的代码连接到某些外围设备并且它可以工作;我自己的CBCentralManager也有一个好的代表和我的外围设备.
我究竟做错了什么?
我在Xcode-Beta5上使用iPod-Touch iOS8-Beta5.
谢谢,
本
编辑
好的,那更奇怪了
我尝试使用iOS7上的旧应用程序中的以下代码. Objective-C,我在连接时保存了UUIDS字符串,并尝试检索外围设备.效果很好:
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"UUIDString"]) { NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:[defaults objectForKey:@"UUIDString"]]; NSArray * data = [self.centralManager retrievePeripheralsWithIdentifiers:@[uuid]]; if ( [data count] > 0 ){ self.currentPeripheral = [data objectATindex:0]; [self.currentPeripheral setDelegate:self]; [self.centralManager connectPeripheral:self.currentPeripheral options:nil]; } } else { NSLog(@"ScAnning started"); /*...*/ }
这与我在iOS8上的新应用程序中的代码相同迅速:
let userDefaults = NSUserDefaults.standardUserDefaults() if userDefaults.objectForKey("UUIDString") != nil { let uuid = NSUUID(UUIDString: userDefaults.objectForKey("UUIDString") as String) let data = self.centralManager.retrievePeripheralsWithIdentifiers([uuid]) as [CBPeripheral] if Data.count > 0 { self.currentPeripheral = data[0] println("Current peripheral \(self.currentPeripheral)") self.currentPeripheral!.delegate = self self.centralManager.connectPeripheral(self.currentPeripheral!,options: nil) } } else { println("Start ScAnning") /*...*/ }
我在iPod Touch iOS7上试用我的旧应用程序,效果很好.
我在iPod Touch iOS8上试用我的旧应用程序,它的工作原理也很好.
我在iPod Touch iOS8上试用我的新应用程序,它不起作用.
我没有发现两个代码之间有任何差异.我可以扫描,发现和连接外围设备,但连接到检索到的外围设备似乎无法在iOS8&迅速.
以上是大佬教程为你收集整理的从CBCentralManagerDelegate回调以在IOS8上检索CBPeripheral全部内容,希望文章能够帮你解决从CBCentralManagerDelegate回调以在IOS8上检索CBPeripheral所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。