Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS10上的CoreBluetooth:CBR外围设备发现服务后超时_Ios_Bluetooth Lowenergy_Core Bluetooth_Nrf51 - Fatal编程技术网

iOS10上的CoreBluetooth:CBR外围设备发现服务后超时

iOS10上的CoreBluetooth:CBR外围设备发现服务后超时,ios,bluetooth-lowenergy,core-bluetooth,nrf51,Ios,Bluetooth Lowenergy,Core Bluetooth,Nrf51,我们的应用程序通过CoreBluetooth连接到蓝牙LE设备 在iOS 8和iOS 9上,一切正常。在iOS 10上,我们发现一个超时错误Error Domain=CBErrorDomain Code=6连接意外超时。 在CBCentralManagerDelegate中: 在连接的CBR外围设备上调用DiscoversServices后 有人知道出了什么问题吗?这是iOS 10版的问题吗?是否有特定的BLE日志需要检查 使用Nordic Semiconductor nRF51822在iPad

我们的应用程序通过CoreBluetooth连接到蓝牙LE设备

在iOS 8和iOS 9上,一切正常。在iOS 10上,我们发现一个超时错误Error Domain=CBErrorDomain Code=6连接意外超时。 在CBCentralManagerDelegate中:

在连接的CBR外围设备上调用DiscoversServices后

有人知道出了什么问题吗?这是iOS 10版的问题吗?是否有特定的BLE日志需要检查


使用Nordic Semiconductor nRF51822在iPad Pro 9.7上安装iOS 10.0.1 14A403

确保在CBCentralManager Legate中调用Peripal:DidDiscoversServices:之前,您不允许解除分配CBPeripal。这可以通过将外围设备分配给属性来轻松实现,例如。g、 :

@property (nonatomic, string) CBPeripheral *peripheral;

...

- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral {

  self.peripheral = peripheral
  [peripheral discoverServices:<desired service UUIDs>];
  ...
}

确保在CBCentralManagerDelegate中调用peripal:DidDiscoversServices:之前,不允许解除分配CBPeripal。这可以通过将外围设备分配给属性来轻松实现,例如。g、 :

@property (nonatomic, string) CBPeripheral *peripheral;

...

- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral {

  self.peripheral = peripheral
  [peripheral discoverServices:<desired service UUIDs>];
  ...
}

好的,我解决了这个问题。我把CBUUID和NSUID弄混了 从iOS 10开始,CBU外围discoverServices仅接受CBUUID。nsuid不再工作了。也许nsuid只是在较旧的iOS版本上意外工作。文件明确指出:

表示要查找的服务类型的CBUUID对象列表


期待将应用程序移植到强类型Swift。

好的,我解决了这个问题。我把CBUUID和NSUID弄混了 从iOS 10开始,CBU外围discoverServices仅接受CBUUID。nsuid不再工作了。也许nsuid只是在较旧的iOS版本上意外工作。文件明确指出:

表示要查找的服务类型的CBUUID对象列表


期待将应用程序移植到强类型Swift。

谢谢,但这不能解决我的问题,因为CBPeripal由强引用持有。谢谢,但这不能解决我的问题,因为CBPeripal由强引用持有。谢谢你救了我。。值得一提的是,如果你输入了NSUID,它就不会发送错误消息,这让你很难找到你救了我的人。。值得一提的是,如果您放入nsuid,它就不会发送错误消息,这使得调试非常困难
NSArray *services = @[
    [CBUUID UUIDWithString:ServiceUUID] //Correct
    //[[NSUUID alloc] initWithUUIDString:ServiceUUID] //Does work on iOS 9 but not on iOS 10
];
[self.peripheral discoverServices:services];