Hi,
Sorry for bad English, and sorry for this is not a full answer for your question.
Your are going after
FTP and missing one critical point,
FTP does need another channel, meaning it need another connection (socket), with passive mode the client will request the second channel, but without it the server will make the connection to the client, and i am sure your iOS device doesn't have a static Internet
IP, and doesn't utilize UPnP out of the box even if your router does support it, mobile ISP never support such protocol.
On other hand
FTP is not secure and can't compete with HTTP in speed for downloading, so i highly recommend to drop
FTP and switch either HTTPS, SFTP,
SSH or WebDAV, it will be way better and more secure, and will work every time.
RealThinkClient as example will simplify this to few lines of code and take care of all the threading you might need, and will perform brilliantly.
ps: many Open and free WiFi will block any traffic not using port 443, expecting and limiting the traffic to HTTPS, all the mentions protocol above can be on that port, removing all the complication with better speed.