Installed App Sizes Vs Appstore app sizes - ios

Here is a question that had been bothering me. The other day I checked my wife's phone and pinterest app was eating up 2 GB of space while the actual app in the appstore is 26.8 MB. I know there must be user / log / crash data that is dumped in its apps document directory but that got me thinking how many other apps on her phone had large amount of user data stored compared to what the app size is in appstore.
So here are my questions of how to do all this using objectiveC
Sample Xcode iHasApp display's all the available apps installed on a device. Is there a way I check how much space they are taking in GB/MB etc?
Is there a way I can go query that app build size in appstore and tell the user hey its only X MB in appstore?
I know I can get to all the app installed on a device is there a way I can check when was an app last launched or used by a user?
Can I check how much space photo / video and music is taking up?
What I am trying do in the end is to see if I can make an app that shows user what they got installed on their device and make some informed decisions themselves.
So far all I am able to find is how to check total used and free space on a device and get a list of all apps installed.

Sample Xcode iHasApp display's all the available apps installed on a device. Is there a way I check how much space they are taking in GB/MB etc?
No. The APIs being used by iHasApp can only be used to check whether selected applications are present -- basically, all you get to ask "is ThisApp installed?", and you can build up a partial list of installed applications by running that check for a large number of common applications.
There is no way to get launch or disk usage information for other applications. I'm not sure last launch is even tracked at all by the device.
With this in mind, most of your other questions are irrelevant. It is not possible to do what you're after from an iOS application.

Related

Fabric data different from iTunes Connect data

Our Daily New User-count from Fabric is consistently bigger than the App Units per day that we get from iTunes Connect.
Fabric defines Daily New Users as
The number of new app installations across all devices seen on a given
day.
And iTunes connect defines App Units as
The number of first-time app downloads made on the App Store using iOS
8 or tvOS 9, or later. App updates, downloads from the same Apple ID
onto other devices, and redownloads to the same device are not
counted. Family Sharing downloads are included for free apps, but not
for paid apps.
What can cause this discrepancy? I can see many reasons for how Fabric could report a lower number (such as users downloading the app but never opening it, or waiting too long to open it), but not the other way around. Our average send-usage-to-developers opt-in rate is 23%, but that does not affect the App Units number if I am not mistaken.
Is your app available on both iPhone and iPad? If so, then the fact that, as you point out, Apple doesn't count downloads from the same Apple ID onto other devices might be causing this discrepancy? You can install iPhone apps on your iPad even if it's not officially supported, so the rule might still be affecting your app. Also, if your app is a paid app, then the Family sharing rules would also affect the numbers. I've actually wondered how iTunes counts new users, so thanks for that info!
I'm not sure why the numbers are consistently bigger for you on Fabric, because for my app they alternate a bit.
I hope you might have got the answer. If not follow the link below http://help.apple.com/itc/appanalytics/#/itc7bea1545f
It seems there are users who don't opt-in app analytics data.
Apple only shows data from users who have agreed to share their
diagnostics and usage information with app developers.

Is it possible to access battery usage/time on screen information of all applications in iOS?

Sorry if the question is worded poorly. Basically I'm trying to programmatically access the time on screen data that you see in the picture (for example 7.5 hrs on screen for Reddit). Is this something that is possible to do?
Short answer: No it's impossible.
iOS since first versions is a sandbox OS. It means that each app can only access to their documents and root folder but doesn't have access to other app. But Apple, add some mechanisms to share datas between apps (like app groups). But these mechanisms doesn't work for system app. React Native is based on iOS native implementation.
You can only got the total amount of battery using libraries : (react-native) How to detect the battery level in react native?
More about sandbox : https://en.wikipedia.org/wiki/Sandbox_(computer_security)

App Store File Size Warning in iTunes Connect

Version 1.0 of my app has finally been completed. It's a simple application with the ability to view multiple leaflets and links to videos from a charity-based organisation. I've uploaded it to iTunes Connect for the final build, but I'm seeing a "App Store File Size Warning" in iTunes Connect.
The app itself contains 220 images (each has an average size of 500 Kb but some much smaller). The idea of the app is to have the charity's leaflets all accessible within the app in an offline state (hence why they're not downloaded from a server somewhere, etc).
The app itself also contains links to the companies videos. So the videos itself are not in the app, but rather links to the videos are populating the app's UITableViewCells.
Reading many questions about App Store size reduction, I have moved 1200 titles and URLs for the videos to text files rather than storing them in code. I have reduced the sizes of the images (they can't be reduced anymore because they will become low resolution). I'm just not too sure what I can do to get to the required limit? Or, could I still submit as it's only a warning and not an error?
For example, I downloaded a game today that was 190Mb. How does that get around this?
The app supports iOS 7, 8 and 9, so I can't use App Thinning just for that. I see some information on this: Max size of an iOS application but it's not new, etc.
Is it possible for me to bypass the warning in iTunes Connect and submit anyway? (I'll submit after the ITC X mas break).
Any thoughts on this would be really appreciated.
That won't cause any issue. If your app is less than 100 MB the warning won't be there. Apple prefers to keep the IPA size below 100 MB for keeping the app mobile data friendly (To download using mobile data).
There are several ways you can reduce the size:
Use App Thinning
Implement an one time download mechanism in your app, through which download the files on first start (I'm doing such a mechanism in 3 of my app, that needs around 300 MB of resource for proper working)
You can read more techniques in Reducing the size of my App

2 ipa files for same app (for better size and performance)

I'm working on an iOS application which is developed for all devices (retina and non-retina)
The size of the app is too big now to have compromise for all devices. (Why should iphone 3gs suffer size where it does not get quality?)
Now, I would like to know if there is a way to optimize the size of game installed on the device.
Specifically, is there a way in itunes submission process where we can have additional downloadable content on the server and can download it based on the device ?
We can have assets broken based on the devices and still can save some size on each device.
There is no way to do this thru Apple. The app isn't even necessarily downloaded to a device initially, it might be downloaded to iTunes on a computer instead and synced to the device. Also the user might download it on an iPhone, sync it to iTunes, then sync it to an iPad, so the only time it would actually be downloaded is on the iPhone. So if it didn't include the iPad resources, then the iPad would have a problem running it in this scenario.
You could always have content that the app downloads from your server upon installation, which could reduce the size, but would delay the user starting to use the app upon first run. You could also include only retina assets and generate the non-retina assets upon first run by scaling the images to half size and saving them for subsequent use. This would also take a little bit of time, although probably less time than downloading assets.
You could always break the app into iPhone and iPad versions as well, which would reduce the app size. This would also give you the ability to set a different price point for the iPad version. This is very common and can definitely help reduce app size for all users. This would also be the recommended way of handling this. Note that this means you'll have two separate versions (different app IDs) on the store. Typically people append something like "HD" to the end of the iPad version when they do this.

Universal app or not

I developed my first iphone app recently and would like to port it to an ipad. I've got a couple of related questions.
1) from what i've read, it sounds like creating a universal app will increase the size of the app that the user will download onto their iphone/ipad. is that right? my app is not small right now and i'd like to add some functions to the ipad version. Its something of a disincentive to package a universal app if it means a larger app for iphone users who won't benefit from the added functions added to the ipad app.
2) is it possible to have separate apps for the ipad and iphone but only make users pay for one version of them, if i don't go for a universal app? That is, if someone pays for the iphone version right now, i'd like them to have the ipad version for free when i finish it in about a month. is that possible outside of a universal app?
thanks,
rich
1) Yes, a universal app has everything for both versions so it is bigger. For a user that wants the app on both types of devices this isn't really a problem.
2) No, there is no way to have two separate apps such that the user can have both while only paying for one. At least it's not possible through standard means. If you make both apps free with IAP, then you could have your apps generate some sort of code that could be entered into the other to grant full functionality. Such a scheme is a lot of extra work.
Try to do a universal app and see how big it gets. All of the code is shared and as long as you don't have too many iPad-only full screen images or iPhone-only full screen images, the universal app isn't much bigger than a non-universal app.

Resources