I have an app that uses the Nordic IOS-DFU-LIBRARY to drive the OTA DFU process with an Adafruit nrf52840 Feather running the Adafruit bootloader. I have the library setup just like the example app but with PRNs set to 1, since that worked one time but hasn't since. The example app works for PRNs between 1 and 8, mostly reliably. The Android version of the library works fine.
Debugging the library and it's clear that it's waiting for a response from the device:
Found it! Service is connecting to the DFU target [D] -- [Callback] Central Manager did update state to: Powered ON [V] -- Connecting to BCaseDFU... [D] -- centralManager.connect(peripheral, options: nil) [D] -- [Callback] Central Manager did connect peripheral [I] -- Connected to BCaseDFU [V] -- Discovering services... [D] -- peripheral.discoverServices(nil) [I] -- Services discovered [V] -- Starting Legacy DFU... [I] -- Connected to BCaseDFU [I] -- Services discovered [V] -- Legacy DFU Service found [V] -- Discovering characteristics in DFU Service... [D] -- peripheral.discoverCharacteristics(nil, for: 00001530-1212-EFDE-1523-785FEABCD123) [I] -- DFU characteristics discovered [V] -- Reading DFU Version number... [D] -- peripheral.readValue(00001534-1212-EFDE-1523-785FEABCD123) [I] -- Read Response received from 00001534-1212-EFDE-1523-785FEABCD123, value (0x): 0800 [A] -- Version number read: 0.8 DFU Service is initializing DFU operation [V] -- Enabling notifications for 00001531-1212-EFDE-1523-785FEABCD123... [D] -- peripheral.setNotifyValue(true, for: 00001531-1212-EFDE-1523-785FEABCD123) [V] -- Notifications enabled for 00001531-1212-EFDE-1523-785FEABCD123 [A] -- DFU Control Point notifications enabled [V] -- Writing to characteristic 00001531-1212-EFDE-1523-785FEABCD123... [D] -- peripheral.writeValue(0x0104, for: 00001531-1212-EFDE-1523-785FEABCD123, type: .withResponse) [V] -- Writing image sizes (0b, 0b, 252196b) to characteristic 00001532-1212-EFDE-1523-785FEABCD123... [D] -- peripheral.writeValue(0x000000000000000024d90300, for: 00001532-1212-EFDE-1523-785FEABCD123, type: .withoutResponse) [I] -- Data written to 00001531-1212-EFDE-1523-785FEABCD123 [A] -- Start DFU (Op Code = 1, Upload Mode = 4) request sent
Enabling debugging to the Adafruit bootloader and it appears to receive that request but it isn't clear where it gets stuck at. The disconnect isn't related:

I used the Nordic BLE sniffer to capture the trace:
bootloader_dfu.pcap
What are some possible paths to pursue troubleshooting this? I assume it's something with the library usage since that's the only possible difference between the example app and our app.