So In my app, I have a bunch of images. And in order to keep the app size down, I could store those images on my serve, and just download and cache them as needed. But my question is, will that hurt user experience? Is it likely an iOS user won't have internet access while using my app?
This is a "it depends" type question:
If you are building an app like the XKCD or Dilbert comic viewers, you could get away with loading and caching at the user's discretion - both are web comics, and are updated frequently, so the user expects to have to have a web connection.
If your app showcases products, art or locations, you would have low-res versions in-app that are "good enough", you could then allow the user to download hi-res versions (or even videos) and cache them, again at the user's discretion (the hi-res option would only show up if the app can reach the web server, of course...)
If your app is a map kit based travel planning app - you probably will have to expect a web connection at least initially, caching only the specific map sections that pertain to the planned journey.
Lastly, if you want to give the full hi-res experience from the get-go, you will need to keep all media in-app as part of the initial app download - the user might be purchasing the app in iTunes and then sync it to their iOS device.
I have found iOS apps that use all the above.
iOS devices are often used in places without internet.
For iPhones, they are almost always going to be able to get to the net, even if slowly, barring abject wilderness and cellphone dead-zones. Further, much of the time, it will get at least 3G speeds.
While the iPod Touch is mainly an iPhone less the phone... internet requires access to a suitable WAP. Just because you're standing next to it doesn't mean you have access to it. Further, this makes for potentially much slower access - it's possible to set up a WAP on a dial-up connection. (I have seen this done by a couple of businesses.)
the iPad is, functionally, either of those modes, depending upon model.
Further, you need to consider the potential for success of your application. Can your storage/server handle 100 users? Probably. 1000? Most likely. Should it go wild and be 30K users? Can you afford the upgraded hosting should it succeed?
The trick is to balance the following issues:
- expectation of internet
- load times
- memory footprint
- your ability to host the potential traffic
What I would do is package the smallest necessary amount of images to get the app running on opening screen. If your app depends on the internet which it should, place your subsequent images in a CDN like Akumai or Amazon S3 and have the app start downloading them in the background if you think that is necessary. Otherwise, have them on demand.
Consider saving the loaded images in cache. This will be easier to maintain as you add more images rather than updating your app each time.
You were not specific as to what the app is doing. Do we need to sign an NDA first? :)