We have a custom BLE service with several Gatt characteristics using the nrf52832 SDK 15. On occasion a device is no longer able to connect to IOS devices. This occurs after several successful connections. It seems to be more frequent with iPhone x and iPhone 11.
When scanning via nrfConnect the device is discoverable, but not connectable, and the BLE services are not found (see attached image below). The same device is connectable with an an Android device.
We are handling both BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST and BLE_GAP_EVT_PHY_UPDATE_REQUEST in the event handler. In previous similar cases this seemed to be the issue. We are also running fstorage concurrently, however no flash memory saves are performed while the BLE radio is active. Initialization of the fstorage instance is completed before the BLE service is initialized.
I have also seen that IOS caching has been an issue in the past, however our device is not stored in the bluetooth device list (i.e. the device cannot be 'forgotten').