How to find iOS version distribution of your app? - iphone

How do you check how many people are using your app via, say, iOS 3 versus iOS 4? How did this developer, for example, make a graph of his version distribution? I would like to know my personal version distribution to better allocate my development time.

There are some external sources that you can use for this tracking, which also provide analytics reporting. I have been using Localytics in my apps, which is free. It was extremely easy to work with, in my experience.

You can get the the iOS version of a device by using:
[[UIDevice currentDevice] systemVersion].
Then you have to send that info back to your server.

We've been using flurry for analytics in our apps and we've been really happy with it. It keeps great track of the version distribution, but also allows us to track just about any event we want just by dropping in a line of code. Anyway, I'm sure there are many other great options out there, but that one's definitely worth checking out... and it's free.

Related

Is it possible to gather other apps data in swift?

I'm building an web application with react-native.
In this app I need to gather some information about users.
One of them is how much time they spend on other apps installed on their phone.
I couldn't find any library for this job, so I've decided to write the native code my self.
For android, apparently there is this UsageStatsManager that can help me achieve what I want.
But when I searched for sth similar in ios, I found lots of old forums saying that this is not possible.
But I recently I saw this:
It is asking for permission to gather other apps data. SO IT IS POSSIBLE?
Any suggestion is appreciated. How am I supposed to this?
There is no API by apple itself for retrieving data of third party applications. This is called "Sandboxing" where applications are restricted from changing the device settings or retrieving/changing other apps data. Hence, why iphones are secure.
What you have shown in your screenshots is to track application data for personalised ads and such. This can be achieved using the AppTrackingTransparency framework provided by apple. You can read more about the framework here.
TL;DR - You can use AppTrackingTransparency for personalisation

Flash iOS applications

I am currently building an iOS application with flash CS5 and I would need some help with a couple of the features:
Is it possible to add in-app purchases? If yes, how does that work?
Is it possible to add iAd advertising to the app? If so, how? If not, is there any good alternative that works with flash?
How can I save data from within the app so it will be there eaten if the user restarts the app and even the device (like for a headboard and such)?
Any help is highly appreciated!!! :D
If it were a few months ago. Then answer would be an unequivocal no. However, presently, the answer is "perhaps" (or if you are an optimist, "probably"). With the release of Air 3.0, it now supports Native Extensions. These extensions are native code that have a wrapper API around them so that they can be compiled in with and called from an Air application.
In fact, I decided to look around real quick while researching for this answer and found a repo where it looks like somebody has implemented in-app purchases via a ANE. But I haven't tested this extension personally, but it may be a good starting point to see how it is implemented.
The reason you wont find too much information about ANE's yet is because they were only recently supported in the Air 3.0 update that happened last month. They are currently unsupported in Flash CS5 (or 5.5) or Flash Builder 4.5. They are supported in Flash Builder 4.6, which is currently in a closed beta. But you might be able to sneak in still, and it should be released soon.
The biggest "drawback" is that these extensions need to be developed in the native format for the device you are targeting. So that means, if you want to make an iOS extension, then you are writing it in Objective-C and xcode on a mac.
Pretty much the same answer as before. It should be possible with a ANE. But I haven't found any examples of anybody doing it yet.
It is very simple to save data/state to the device. You'll want to look into the SharedObject.getLocal() method if you want to the LSO. Or you can just use low-level File writing. Check out File.applicationStorageDirectory. For sensitive information that should be encrypted into into the EncryptedLocalStore class, which I believe is supported on iOS but not on Android.
All of these should provide a good way for you to persist data between application sessions.
With AIR 3 you can now use native extensions to call into the native platform code to achieve the functionality not provided by AIR Actionscript APIs. To answer your questions.
in app purchase. I have a sample at http://code.google.com/p/in-app-purchase-air-ios
iAd. I have a sample at http://code.google.com/p/iad-air-ios/
As others have already answered use local shared objects.

Google Analytics within iPhone SDK 4 Built App

Three questions for iPhone developers using Google Analytics within their apps for tracking use of their apps:
Will using Google Analytics cause us to be in breach of the terms and conditions of the Apple SDK 4 for developers?
If the answer to #1 is YES, then what are we -- as iPhone developers -- allowed to use to track usage of our apps?
Has anyone who is using the iPhone SDK 4 built their apps that included the Google Analytics library and found it not to work? I'm being told by my developer that it doesn't work when you build with a Base SDK set to iPhone Device 4.0 and and an iPhone OS Deployment Target set to iPhone OS 3.0.
Thanks in advance!
Answers to your questions:
Yes, with the current API and data collection it looks like it is not compliant with the terms of the SDK. I am using both Flurry and Google in my apps because they offer different feature sets that I need. While Flurry has been very vocal that they are working with Apple to resolve the terms of the SDK, Google hasn't said a peep. So, I'm nervous about using Google but not Flurry, because I think Flurry will change their data gathering if Apple presses hard enough. In any event, I have made sure that I can rip out either analytics service quickly if Apple rejects my app.
My understanding is that it's fine to collect your own device data, as long as you don't report it to others. You especially don't want to share any data that would hint at new devices. That's what got Flurry in trouble. Just remember that you are under NDA with Apple, so anything not publicly announced is between you and Apple. There are also rules about what you do with Device IDs, so make sure you understand those as well.
I am using Google analytics on iOS 4, with deployment target set to 3.0. While I no longer have a device to test against 3.0, it is deployed on the AppStore and seems to be working. (No crash reports)
Louie, I encourage you to take a look at Localytics, our app analytics service. Our service is real-time, we don't sell data to third parties and we release the source code to our libraries.
We also have an updated library that works better with the multitasking or fast-user switching in iOS 4: http://www.localytics.com/blog/
Check out www.flurry.com - they have an awesome service!
They allow you to add "events" so you know not only how many times the apps been downloaded, opened, removed... but you know what buttons and areas they are navigating to once the app is open.
If your app uses core location, you can even see where the users are on a map. Very cool!
Good luck my friend!

Is it possible to mass update multiple iPhone applications?

I'm not all that familiar with Apple's iPhone development system, but I'm trying to figure out if theres a way for developers who create custom iPhone apps to update their apps on a mass scale. For example, would a company who publishes hundreds of apps have to resubmit every app they've made manually if they find a minor bug that affects all their apps (assuming they have used a template)? Or is it possible to somehow use or build a custom program that can make this process easier, by automatically generating or updating apps? I don't believe Apple has an API or anything, but it just seems like it would be a nightmare for these developers to fix bugs, and thought maybe I was missing something.
Thanks in advance for your help!
Apple provides no way to automate this. In theory you could write a program to simulate a browser to login and upload new binaries for you, but I'm not sure Apple would like that very much, and it would be a lot of work.
In addition, one might argue that if the apps are similar enough to warrant this automation, it should probably be one app instead of many. But that may be an over generalization without knowing your use case.
There's the Application Loader
http://itunesconnect.apple.com/apploader/ApplicationLoader_1.2.dmg
(requires login)
It doesn't do bulk uploads, but it does provide a maybe more accessible interface.
Isn't there that separate application that you can use to talk to iTunesConnect? (Though I still don't think it's possible to do mass updates.)

How does Apple know you are developing iPhone apps on MacOS?

I know there is a requirement in their EULA, but I heard about people getting their apps developed on Windows into the app store.
How can Apple find out, or do they even know?
They don't, so if you get a native compiler and toolset up and running on Windows, more power to you.
But realize that:
You will not be able to use a language that compiles to bytecode (that's Java, C# and the .Net languages, Perl/Python/Ruby, etc.). Apple will most likely not allow any sort of interpreter through the App Store.
Chances are your tools will not contain an Interface Builder equivalent or an iPhone Simulator equivalent. You're going to be writing a lot of code and spending a lot more time testing.
You won't have local documentation. You'll either have to use Apple's website or rely on third-party documentation which may mix App Store-allowed and -forbidden methods without indicating which are which.
You won't have Xcode's editor, which is highly specialized for Objective-C. You'll have to type a lot more.
You won't be able to get help as easily since you're not using the same tools as others.
You will never know when a bug is in your code, your tools, or your platform. People using the official SDK can file bug reports on the tools just as easily as the platform.
Your tech support incidents are worthless, because you're violating your contracts.
If Apple ever does find out, you're likely to be kicked out of the App Store and all your work will be for nothing. Unless you're an idiot, this thought will worry you.
If you're a hobbyist, these may be acceptable to avoid paying $400 for a used Mac mini, but if you're not a hobbyist...this is no way to run a business. Pick up a used Mac and think of all the money you're not spending on a factory, a store, offices, inventory, or employees during your setup time.
There is no sdk available for Windows. XCode only works on Mac OSX, how would one compile, test, and run the app if not on Mac OS X?
I dont think they know. There's no official SDK for the PPC architecture, but some simple installer hacking yields a working binary for my Powerbook. Similarly, if you get your code working on Windows, more power to you...