Uploading firmware via Bluetooth is not working in iOS

We were DFU-Library to upload firmware to our BLE accessory earlier. But our new set of accessories doesn't support DFU library and we need to upload the firmware to an OTA service in its respective characteristics and we does the same using following code,

    var offset = 0
    var bytesToSend = fromData.count
    let packetSize = BoardInformationService.packetSize
    var chunkArray: [Data] = []
    
    repeat {
        let chunkLength = min(bytesToSend, packetSize)
        let chunk = fromData.subdata(in: Int(offset) ..< Int(offset + chunkLength))
        chunkArray.append(chunk)
        
        offset += chunkLength
        bytesToSend -= chunkLength
    } while bytesToSend > 0
    
    print("BT: Total Chunk size:\(chunkArray.count)")
    return chunkArray
}

func uploadNextChunk() {
    if let firmwareCharacteristic = fileCharacteristic {
        print("Found fileCharacteristic to upload")
        if self.currentPacket < self.totalNumberOfPackets {
            
            // Send next chunk
            let nextPacket = self.fileByteChunkArray[self.currentPacket]
            print("BT: current packet uploading: \(self.currentPacket)/\(self.totalNumberOfPackets) Data:\(nextPacket)")
            self.currentPacket += 1
            
            // Write to peripheral
            BTDiscovery.sharedInstance().peripheralBLE.writeValue(nextPacket, for: firmwareCharacteristic, type: .withResponse)
        } else {
            updateCompleteCompletion!()
        }
    } else {
        print("No fileCharacteristic to upload")
    }
}

// This is a delegate method which gets called when we get response from our peripheral after sending each packet.
func ackReceivedFromPeripheral() {
    uploadNextChunk()
}

But this doesn't work on iOS but the same approach working on Android. Can you please guide me what could be wrong here.