iOS 13.1 - Classic GATT vs BLE GATT

Somehow the pattern to connect a CBPeripheral has changed with 13.1 compared to 13.


  • If the CBPeripheral reference was retrieved from a BLE scan and connection is created on that CBPeripheral, service discovery and pairing works as expected. Also, classic pairing and address resolution will be done.
  • I then store the UUID of the CBPeripheral and disconnect
  • Next, I try to get the CBPeripheral via CBCentralManager.retrievePeripherals() passing in the UUID and connect to it with connect CBCentralManager.connect()
    • this works as expected on iOS 13 GM (BLE GATT is connected, regardless of whether Classic is connected or not)
    • this fails on iOS 13.1 Beta 2 from the logs it looks as if connection attempt via Classic GATT is made but the CBCentralManager delegate connection callbacks never
  • in that case, the only way to connect to a previously known CBPeripheral is by using the reference that was retrieved from the centralManager connectionEventDidOccur event and pass that to the CBCentralManager.connect method...


Is this expected? It does not feel right this way.