8

I develop an enterprise application for iOS and the user should be able to add files from the desktop to the application.

I implemented this using filesharing, which works great.

Now this company wants to get rid of iTunes from their machines (which is quite understandable, iTunes is a very invasive process).

The question is, is it still possible to somehow use filesharing without iTunes? maybe with another application?

Or what other way is there to send files to the app (preferrably without the need of an internet connection)

//edit: must work on windows 7 and must not require to install iTunes (there are some other tools that allow access to the iPad filesystem, but they go through drivers installed by iTunes)

Mat
  • 4,281
  • 9
  • 44
  • 66
  • Using USB connection? You could use iFunBox, but you may need the USB drivers from iTunes. http://www.i-funbox.com/ – Soader03 Apr 19 '12 at 14:42
  • 1
    thank you for the link - for some reasons however my app does not appear in the filesharing option of i-funbox (it works in iTunes though). Also, my client won't resort to an application that is full of advertisement. – Mat Apr 19 '12 at 15:52

6 Answers6

6

You could exchange data via the local wireless network (a connection to the internet is not required, just the iOS device and the Windows computer need to be on the same network).


One option:

You can then create a simple TCP/IP connection over sockets between an iOS app and a Windows application and exchange the data you want.

However you probably need to implement a suitable simple Windows application to do this.


An other, maybe simpler, solution:

You could start a webserver in your iOS-App and show it's IP on the screen. By entering this IP in a browser on the desktop computer you can access websites on the iOS device, which can make documents available for download or receive uploads.

For how to do this, have a look at this question.

Community
  • 1
  • 1
pre
  • 3,475
  • 2
  • 28
  • 43
  • 1
    Will this work in an enterprise network setting? How would I reliably establish the connection between the right desktop machine and the right iPad? – Mat May 01 '12 at 14:05
  • 2
    It works as long as both devices are in the same IP-range. You can get the IP of the iOS in the wi-fi settings. If you are able to ping this IP from the Windows computer a connection is possible. – pre May 01 '12 at 15:58
  • but how would I make this actually usable for the user? (without the need to check IP in settings and enter that on the desktop) – Mat May 01 '12 at 17:59
  • The simplest solution is probably to display the devices IP in the iOS app, which then needs to be entered into the Windows application. But there are also protocols and technologies available to automatically discover the IP, one example would be [zeroconf](http://en.wikipedia.org/wiki/Zero_configuration_networking) – pre May 02 '12 at 18:03
  • 1
    I would suggest that you try to use any of the existing protocols such as Bonjour (I think there is a version for Windows) with [ZSync](http://www.zarrastudios.com/ZSync/ZSync.html) rather than implementing everything from scratch. Anyway, I guess that you will have to program a windows desktop app, but it would be lot simpler! – Angel G. Olloqui May 03 '12 at 16:27
  • Is there no way arround the IP thing? can't i broadcast somehow a connection attempt in the network and display on the iPad all desktop computers that currently broadcast a connection attempt? – Mat May 08 '12 at 09:48
  • Automatic IP discovery is is possible using a zeroconf protocol like Bonjour, this allows a behavior like showing all available computers, which want a connection (like you suggested). Another way around typing a IP is using a Server, which IP wont change, so that you can hardcode it. – pre May 08 '12 at 10:29
3

There are a number of ways to achieve this, ranging from trivial to sophisticated.

Your question says that you would prefer to avoid an internet connection. Simple solutions may require it - if you want to abstract the difficult parts, you're going to have to let somebody do the dirty work, and that's probably going to be someone(thing) on the internet. Midrange solutions may require a network but not internet connection. A sophisticated solution could probably be whatever you want - but one thing I would say, is that trying to tap into the USB connector is either going to result in a hacktastic or very complicated solution to implement.

One method would be to integrate a third party framework that basically does what your looking for. Look at the Dropbox development kit, for example - allowing Windows (or any platform) users to drop files on their desktops into a shared dropbox, and this can then be read by an iOS application which includes the iOS drobox API.

Another method would be to setup a simple WebDAV server in your office. Host it on a windows box, or a cheap linux box. Give users desktop's access to the share via whatever protocol you want (eg, Windows File Sharing). Then you'd implement a WebDAV client in your app (eg, WTClient) to pull files.

Finally, you could build your own transmission system. A sophisticated example might involve Bonjour and TCP/IP, a simpler-but-custom solution may involve a simple JSON web service running off a local (or remote) server.

isaac
  • 4,867
  • 1
  • 21
  • 31
1

I have suggestion but that will require the Internet. I would suggest you to use the DropBox API in the windows and iPhone both. It's awesome to use and very simple for file sharing. Now a days everybody have dropbox account and have files in it to share. So that shouldn't cost anything other than a bit of implementation (this learning can also be used in other file sharing applications). Here are some guidance:

iOS

REST API

UPT
  • 1,490
  • 9
  • 25
  • 1
    However you probably don't want to store sensible company data on Dropbox (or any other third party). – pre May 08 '12 at 10:33
0

You can add apps and documents to USB-connected devices with the Apple Configurator

Dorian Roy
  • 3,094
  • 2
  • 31
  • 51
0

You may use a simple Ftp server installed on PC, so you can connect to server from Ios and upload/download files from iOS to PC....

http://developer.apple.com/library/ios/#documentation/Networking/Conceptual/CFNetwork/CFFTPTasks/CFFTPTasks.html

All work is done by Pc and your app will use IP (Intranet or Internet) of PC to share all files.

From Ios you can read all files in FTP server and work with them.

  • thank you for the suggestion. This again requires to type in an IP, right? is there no way arround having to type in an IP? It's not really something I'd like to have in a iOS app for non-tech-geeks... – Mat May 08 '12 at 09:46
  • you can place in Http folder a textfile with info for all FTP server like this: Name of Server - Ip 10.10.10.10 You use your app to scan this info file and give to user a list of names(Our servers) and in memory all Ip of given names for late use with FTP component. – Daniele Pratelli May 09 '12 at 15:53
0

I use the FileBrowser app to get access to network shares over WiFi and will allow you to load supported files to the device. The company responsible is creating an API to allow you to do this within your own app: https://twitter.com/#!/Stratospherix/status/193114857271336960

Kim R
  • 561
  • 2
  • 13