Unable to detect Bluetooth devices in the background on iOS 16.6.

Bluetooth devices could not be detected in the background on iOS 16.6.

Up until iOS16.0.3, the same code was able to detect Bluetooth devices.

Did the update between iOS 16.0.3 and iOS 16.6 put restrictions on Bluetooth scanning?

It is initiating a Bluetooh scan upon beacon detection. The beacon is detectable.

Below is the code.

func locationManager(_ manager: CLLocationManager, didDetermineState state: CLRegionState, for region: CLRegion) {
        switch (state) {
        case .inside:
            print("StartBeaconNavigation: iBeacon inside")
            myLocationManager.requestAlwaysAuthorization()
            if(bleManager.linkState == .disconnected) {
                _=bleManager.startScan()
            }
            break;
            
        case .outside:
            print("StartBeaconNavigation: iBeacon outside")
            break;
            
        case .unknown:
            print("StartBeaconNavigation: iBeacon unknown")
            break;
        }
    }
func startScan() -> Bool {
        print("BTMana:startScan")
        if( centralManager.state == .poweredOn ) {
            if centralManager.isScanning == false {
                let UUIDs: [CBUUID] = [systemServiceUUID]
                let scanOptions = [CBCentralManagerScanOptionAllowDuplicatesKey: true]
                centralManager.scanForPeripherals(withServices: UUIDs, options: scanOptions)
                
                return true
            
            } else {
                print("BTMana:startScan NG for scanning...")
                return false
            }
        } else {
            print("BTMana:startScan NG for state is not powerdOn  ")
            return false
        }
    }

As above, we are specifying the UUID of the service when scanning.

Thank you in advance.

From research, I was able to make a BT connection between iPhone12 (iOS 16.6) and iPhone8 (iOS 13.7) in background state. So it seems that there was no limitation of BT scanning in the background. However, I am not able to connect with the BT device I have in my hand in bag ground. With iOS 16.0.3 I can connect in the background. So was there any change in the background BLE communication method between iOS16.0.3~iOS16.6?

Further investigation revealed that the BLE device at hand was not detected on iOS 16.6. Was there a change in the recent iOS update that prevented BLE devices from being detected in the background?

Hello, please let me report something similar. My client uses an iPhone with iOS 16, i am on iOS 15.

Our target hardware is an ESP32 board, which runs ESP_IDF in version 4.4.4. On my phone, the Bluetooth LE scanner application found in the App Store can see the device; on hers, it can not. The name never shows up, even though the hardware works and a test Android phone also can see it.

Please, advice, what goes wrong here.

Unable to detect Bluetooth devices in the background on iOS 16.6.
 
 
Q