Large app size in AppStore. Is it allowed to download external assets? - ios

I've developed a game, it's total file-size with all assets is about 220Mb.
The game is developed in Haxe language with a framework called openFL - that allows to compile iOS and Android versions from a single source.
Because Android's Google Play doesn't allow apps larger than 50Mb in one go, I've separated the graphics assets and sounds from the code, leaving the app at about 1.5 Mb. I don't want to make a separate branch for iOS, so I'd like to use the same logic for App Store as well.
My question is - is it allowed to download the external assets for iOS similar to how Google play does it? Will App Store host these files for me?

Related

How to embed Autodesk Forge Viewer with mobile app?

I was using ionic and angular to develop a mobile app that could display the pdf, image or dwg file within the forge viewer. It works all perfectly on the website monitor, but when I deploy the app in the ios phone and the android phone, I found out that if I open the dwg file and some image file, the app will crash sometimes. Btw, some extension is not supported by ios, such as pushpin extension. It seems that three js works not good in ios.
I also check the document about the "Create iPhone Apps Using Forge Viewer & React Native" in the forge viewer official website. After I follow the steps to build the app with native react and deploy it on my phone, pdf and image file works good but not for the dwg file.
I have experience building apps with ionic but not React Native. Compare to these two frameworks, which one should I pick? If I continue using the ionic framework if there is any way I could use to improve the performance of the forge viewer inside my app? or would it be better to switch to React Native?
For tech questions, how could I avoid the app crash and improve the performance? I checked the A360 app on the app store, I found out that the app is using the offline data, it will download all the data once it opens the file. Should I do the same way?
App Viewer
Technically both RN and Ionic embeds Viewer as external dependencies in WebView so there's no material difference/pros and cons in the approach to embed.
As such I'd recommend to go with the framework you are more comfortable/experienced with - although RN seems to be blessed with a couple of samples but those do little more than scratch the surface when it comes to a real world solution so you can get up to speed with their approach and go from there.
Performance wise yes - downloading the derivatives (SVFs) to the client side would certainly improve load times - you can either see here and here to download, store/package locally and override request handling of WebView to load them (as Viewer only supports http(s) and not file or other protocols) , or cache the resources with Service Worker following here and here.
You can look around SO for other performance related questions - mostly they are about setting the memory options, correct FPS targets, consolidating geometry, selective loading and adjusting navigation options - for specific issues you can post another question or email forge.help at autodesk.com for assistance.
It is okay to open the dwg file less than 1mb very soon, but if the file is larger than 1mb, it will take some time to load and is hard to zoom the viewer.
I'd suggest to download or cache the derivatives (SVF) locally to boost loading performance. I was unable to reproduce any difficulty with zooming - did you set viewport in head meta tag?

Is it possible to create a IOS app that can download plugins and extension later?

we have a ios app that provides the platform for many similar games. When you install this app. This app already contains binaries of x number of games.
Now we are having size issue. So just wanted to know is it possible to create a ios app that can get installed and after that as per user selection can download the games binaries separately and then run. Like a app that can download games as plugins or extensions.
I work on game side part so i dont know anything about ios apps. but so far my understanding is -> when you create the ios executable then while compiling you should have all the code present (app + all the games it will run).
It is not possible to download a native executable and run it -- that is not a capability provided by app extensions.
One loophole you might consider: it is perfectly permissible to download and run javascript, or anything else that runs in a UIWebView or WKWebView, which are both sandboxed from your iOS App's process, and have access to OpenGLES 2.0 in the form of WebGL. There are also apps which have been accepted in the App Store which can run code in interpreted languages like Python.

Trimming down skobbler map size & offering download alternatives

We're making offline road-trip planner.
We want to use skobbler maps but the main issue is that the framework is way too big.
Even with some trimming down options, it's still over 110Mb (only with skobbler framework).
Inside SKMaps.framework there is a document SKMaps with 95Mb is size.
No program can open this document (at least no program i have on my mac atm).
I was wondering what might be in this document and is it possible to 'open' it and remove unnecessary files from it.
I am asking this because when I launch my app with skobbler in it, there is a map of entire world available to explore.
I don't need that. I only need several states in the US and that's it. One state is roughly 30Mb in size, which is acceptable and download option for each state can be an asset, so a user downloads only what he needs.
IF there is no way of deleting entire world map from framework, what are my other options?
Can this file SKMaps, with 96Mb in size be downloaded after a user launches an app, so I don't have a huge app on the app store?
Can i write and launch my app without SKMaps in the app bundle from the start, and I make the user download it once he starts an app for the first time?
Edit the SkMaps.bundle and this will impact the .framework object.
Indeed, the unpacked size will be > 100 MB but when packing it (generating the .ipa file) it will only add ~20MB to the final app file (i.e. compiling the demo project without audio advices and only 1 style, targeting both armv7 and arm64 will generate a .ipa file of ~ 19.4)
By default the demo app does not "contain" any maps - it connects to the servers and downloads the map from there.
If you'd like to download "offline maps" - see the "Maps.json and downloads" example in the demo app.
If you're intent is to "prebundle" an offline map within your app see: http://sdkblog.skobbler.com/creating-an-app-with-a-pre-bundled-map/

iOS Downloader App and Ecommerce Package?

I'm having to launch an ecommerce store that sells audiobooks, and one of my top goals is to make it more mobile friendly. The actual purchase portion isn't a problem, but since iOS doesn't allow in-browser downloads of audio files, I'm looking at having to provide an app for that purpose.
Is there a packaged ecommerce/downloader solution that I could use, such that rather than designing an app from scratch for my store I can build the store using the ecommerce solution and do some configuration to the app to link them up? The only real requirement is that people be able to sign into their accounts, and play/download any files they have bought.
If not, are there any open-source core downloader iOS apps I could use as a base to design my own downloader? I've tried my google-fu, but any query that involves "iOS" and "download" just results in a million "how do I download my app?" FAQs from across the internet.
(I'm not concerned about Android as much since they can just download the audio files, though if the solution supports apps for both so much the better.)

ios - Enterprise app with more than resource files of size 2GB

I'm working on an ipad application for enterprise distribution (that will be used only by my company people)
It has many video files, images, pdf's etc. after making the app, the size of the ipa is around 2.2 GB.
I'd like to know whether the app will run effectively on all iPad's or will it be trouble to do so?
Looking forward for some solution where it won't effect the performance of the app
If you stay under 2GB, it should definitely work for all devices, since the maximum limit of an app on the AppStore is 2GB.
Since you you distribute internally, it should theoretically also work with a larger file, like 2.2GB as you mention.
Most iPads should have FAT32 file system (or better) which sets the physical limit to 4GB. However I don't know if there exist iPads with a FAT16 file system, if it does, their limit is 2GB!
However, I would not recommend having such a large app bundle. Instead I would use a small app bundle and let the users download the content from inside the application from a company server.
If you need to have offline support, you could provide bundles or packages for the users to download into their apps, and save them there (preferably smaller than 2 gb each).
There are many good reasons for this:
What if you need to release an update for your app? Do your really want to force your users to download a new 2GB bundle just for an upgrade?
What if you want to add more content? Wouldn't it be better if the users could download this from inside the app?
You can let your users download the content in steps (an app bundle needs to be downloaded completely at once)
Let your users choose what content they need to download
Let your users use the app while content is being downloaded
and more...
I'd recommend pulling what you need from your servers when it's needed, (since I assume most of these files currently reside on your servers anyway), then discarding it when you don't need it.
I wouldn't include anything in the build of your app that can be included at a later time.

Resources