Size and resolution of videos within the iOS app bundle - ios

What are the different video size and resolutions that can be added within the bundle of an iOS app to play for all iPhone and iPad models. Is there any limitations over size and resolutions of videos. What is the proper video/size to play well on all devices

There are many downsides to including large amounts of content (a large total bundle size will force your users to install over WiFi, for example) but as to specific content size/format restrictions, there aren't any.
Just in case... If you're talking about "what is the proper video format/size to play well on all devices", that's a different question and not the one I am answering (effectively, "aggregate bundle content size").

Related

App Store Connect Mixing Screenshots and Previews

We are on the verge of uploading our first production app to the App Store. I have taken screenshots using an iPhone 8 (4.7"), an iPhone X (5.8"), and an iPad (9.7").
Now, I understand based on Apple's documentation that it is valid to upload these "alternative sizes" (aside: these alternative sizes are ~70% of iOS devices but I digress) and the sizes will be upscaled accordingly to the larger sizes of iPhone (5.5") and iPhone X (6.5", XS Max only as of this writing), and iPad Pro (10.5", 11", 12.9").
My issue is that the promo video for my app was produced at the conventional HD 1080x1920 (valid for 5.5") and 1200x1600 (valid for 12.9"). I can of course downscale these, but ideally I would like to keep the original higher resolution. So my question is: if I upload a mixed bag of assets, will e.g. an iPad Pro still display my preview video AND the upscaled smaller images from my 9.7" upload? Will an iPhone X, which has its own images but a promo uploaded only for 5.5" still show that iPhone 5.5" promo? In most general terms, can I mix and match sizes and expect the App Store to provide assets to the user appropriately?
I spoke with Apple. The short of it is that App Previews (video) and App Screenshots (stills) are separate entities, so you can mix and match. That said, according to the rep with whom I spoke they will never upscale images or video for you. So you should always use the largest device size. He suggested that any images I had in a lower scale I scale up in Photoshop and then submit.

Totally confused about app-thinning

From what I have been able to understand from Apple's documentation, there is a 100mb over-the-wire limit on downloadable apps from the app store.
Apple recently introduced 3x assets for iPhone6+, causing ridiculous levels of bloat in our applications. Thus, app-thinning... So the idea is, I add an asset catalog and put all my images in there, and then the app store will know when an iPhone 6+ user downloads the app, it will only give them the 3x and 2x versions (i'm assuming for zoomed / non-zoomed), and when an iPhone 6 user downloads the app, it will give them the 1x and 2x versions (i'm also assuming for zoomed / non-zoomed).
So the 3x users are really only saving space by not downloading the 1x size assets (which are small and insignificant). And the 2x users are saving space by not downloading the 3x size (which is significant)... However, my question is app-thinning is only available for iOS9.. So what does that mean?
An iPhone 6 user on iOS8 will not be able to download the app at all because they don't have app-thinning and therefore they would be downloading the entire collection of assets and it will exceed 100mb?
I am asking this question because I uploaded my cocos2d game build to iTunes Connect and it says its compressed file size is 172mb with a yellow exclamation point, so I am worried about this... In my case, I know the problem really comes from the 3x size art. I'm not currently using asset catalogs because cocos2d (v2.x at least) doesn't support them, and I don't want to bother adding support for that if it's pointless as I am thinking based on what I've described above...
App slicing takes place on the App Store Servers so devices running iOS 8 or earlier are still able to download apps, which have app thinning enabled.
The App Thinning Documentation states
Sliced apps are supported on devices running 9.0 and later; otherwise, the store delivers universal apps to customers.
If the size of the universal app exceeds 100MB, the user has to download it over WiFi. A method to lower the initial download size are on demand resources.
Note:
As the pixel density on the iPhone 6 Plus is higher than on other models, even when non-zoomed, only the 3x images are needed so the 2x images do not need to be downloaded so the iPhone 6 Plus users do save a little bit more.

What can be the maximum size of iOS app?

I have some 1.5 GBs of images and videos in my app bundle. Will apple allow such a huge size app?
Can we optimize the app to bring the size down?
Yes, Apple will allow apps of any size on the App Store. As a point of reference, the game Infinity Blade III is 1.92GB.
But keep in mind that apps (or their updates) over 100MB cannot be downloaded over cellular, so if it's possible to structure the app in such a way to accommodate that (i.e., download the videos and images separately etc), then that will definitely help.

Keep many images in an iOS app

I want to make an iOS app. This app will have over 200 images, each with different sizes (500x500[maybe smaller] and less). What is the best method to keep them, having a smaller app size?
I think about optimizing their sizes for web in photoshop, but still the app will have a big size if I want to keep and a respectful quality.
Any ideas?
Well, I don't know if you can do this for your app, but you can download them from the internet once the user installed your app. This way you can keep the size of the package as small as possible (I assume you talk about non-critical images, that can be obtain afterwards).
UPDATE
Alternatively you can use SVG instead of bitmaps, of course if applicable:
how to render svg file in iphone and ipad

Do I really need lower-resolution images for older iOS devices?

I am developing an iphone application and i am using a background picture for my app. I know that before iphone 4 , the resolution of the screen was 480x320 and after 960x640. I read that i should use 2 images like : MyImage.png and MyImage#2x.png with the 2 different resolutions and the app will know which one to choose according to the phone. My question is very simple. If i just use the 960x480 , whats the difference? I am developing on an iphone 3gs and i am using this resolution and everything works perfect. So why have a small resolution for these phones?
The difference, in my opinion, is the following: the phone is going to resize the doubled-resolution to half the size, and this will lead to (1) the final image is not as smooth as if you would have exported it from a image application like Illustrator or Photoshop - at least from my own experience, when I export both resolutions, in non retina devices, the images don't look as good if I had exported the normal resolution. Also (2) the device will waste time/performance to make this conversion, although I don't know how much it is significant. And (3) finally, you may overload memory with no need, considering that the doubled sized images are bigger files, and you could use smaller files instead.
If you don't mind about this issues, you can go ahead. Try yourself.
If nothing else, the high-resolution images will tax the memory much more. One full-screen image at 320✕480 is around 600K in memory, whereas the 640✕960 is almost 2.5M, four times as much. On the older devices the memory is much more scarce than on the new ones and you might run into problems later in the development cycle, when there are more resources in play.
Even if you are able to test the app on all older supported devices and you can guarantee that there are no immediate performance problems or visual glitches, the app will take more memory, forcing the OS to kill other apps more frequently (= worse overall user experience).
if you use one version of image, (960x640) , there will be a memory overhead when the app run on non-retina. you dont need to display the high res in non-retina, only in retina display, making two versions of images .png and #2x.png will tell ios which image version it should load, depends on what device is currently in use.

Resources