Analytics for iPhone apps - iphone

I was wondering what are some good analytics plugins for the iPhone SDK?
Would it be wise to use Google Analytics and have that hook up to the app?
What are my options? Any particular strategies?
Thanks

Flurry recently released an updated SDK in mid-June for 4.0 that complies with SDK EULA changes. It now no longer sends device names and OS/firmware versions.
Implementation is as simple as a line of code in your app delegate's didFinishLaunchingWithOptions, and you can optionally tag specific events as well and add location tracking.

According to Apple : "Device Data may not be provided or disclosed to a third party without Apple’s prior written consent. Accordingly, the use of third party software in Your Application to collect and send Device Data to a third party for processing or analysis is expressly prohibited…"
Here is a Tutorial ,If you want to integrate Google Analytics inside your application.

I haven't updated myself with the very very latest developer terms and conditions, but the last set I read (attached to the iPhone SDK 4) stated that you weren't allowed to send device data to 3rd parties for analysis or collection. So be careful when considering your choice.
I heard rumours that apps containing Flurry Analytics are being rejected from the App Store. This would seem to tie in with the small outburst Steve Jobs had during the All Things D interview, when he slated Flurry for collecting iPhone 4 and iPad data before the devices were released.
However, contradictory to that rumour - my own apps contain Flurry Analytics and they have had a few updates approved since iOS4 was released to the public. So perhaps the rumour doesn't hold any water? I Also heard that Flurry had updated their SDK and removed the code that collects device data.
Just to be clear, only device data was prohibited from being sent to 3rd parties. App usage, and other data may be collected and sent to third parties. Device data would boil down to things like hardware model numbers, UDIDs and software version information, etc.
So just be careful in considering your analytics choices. If you want to see device data, you'll have to collect it and store it yourself using a private web service or some other method.

Related

Conversion tracking for Mac App Store

Google and Facebook offer SDK for conversion tracking on iOS (from online ads to app installs):
Google: https://developers.google.com/app-conversion-tracking/
Facebook: https://developers.facebook.com/docs/ads-for-apps/mobile-app-ads
However, I could not find equivalent SDKs for the Mac App Store.
Are there equivalent SDKs for the Mac AppStore?
If not, what's the best way to measure conversion rate for installs from the Mac App Store?
The approach that most people use for this is to place a tracking pixel into their app.
On the first run of the app (note this is not the same as install as someone might install but never run the app), the tracking pixel fires and you can then just count the fires of that pixel.
Attribution (i.e. what caused that install) is difficult as usual - there are third parties who exist who can act as an intermediary that can do this, e.g. HasOffers or Kochava are two that spring to mind.
N.B. for Android installs from the Play Store, this "just works" with AdWords.
At present Apple doesn't provide conversion tracking. Later this year it will. It's unclear to me how you think an SDK would be involved; it won't be.
For anyone else researching this (there are surprisingly few results for this topic on Google) you should focus on tracking conversions with App Store by Apple. Make sure to use UTMs to see which campaigns are performing.

iPhone App Rejected By Apple saying analytics used

One of my iphone app rejected by apple. Here is reason from resolution center.
We found that your app uses analytics software to collect and send
device data to a third party, which is not in compliance with the iOS
Developer Program License Agreement.
3.3.9 You and Your Applications may not collect user or device data without prior user consent, and then only to provide a service or
function that is directly relevant to the use of the Application, or
to serve advertising. You may not use analytics software in Your
Application to collect and send device data to a third party.
Specifically, your application is transmitting the user's MAC address
without their prior consent. It would be appropriate to either remove
this behavior from your application or obtain the user's consent."
Not used any analytics sdk. Only 3rd party sdk used are - Chartboost, Revmob, facebook-ios-sdk, Nextpeer. How can I resolve this problem? how can find which sdk has problem ?
I got reply from apple for same problem. Apple indicated its nextpeer multiplayer sdk issue. User device info is collected in the game. Easy fix is to indicate it in EULA.
See these screenshot.
How are you? This issue most likely wasn't caused by us here at Nextpeer but I will happily look into this for you on our end. If you could please email me (alexander#nextpeer.com) with what SDK version you used during this rejection and your bundle ID, I will check it out for you.
Look forward to hearing back from you.
Nextpeer solved this issue in the 1.5.2 release of the SDK. There is no longer any need to make an addition to the EULA.
How do I know? Because I emailed alexmussafi and asked him :) But he's not found time to update the answer and I wanted to save anyone else the trouble.

Determine my customer's iOS Versions

I am trying to decide if I should keep support for iOS 4.x in the next build of my app or drop it an only support iOS 5 & 6 going forward. Does Apple report back to the developer the iOS version for each app sold so I can get an idea of the demand for my app from older devices? I have scoured iTunesConnect but I do not see it there.
I would rather not maintain the support going back that far, but if the user community and demand it there, it may make financial sense to do so.
Thanks!
Apple doesn't report this back to you via iTunes connect. You need to integrate this into your app via third parties like google analytics, flurry, or any other platform.
It's also very easy to report the version with [[UIDevice currentDevice] systemVersion] if you can roll your own analytics system.
As Jessedc mentioned you can use [[UIDevice currentDevice] systemVersion], however, you don't have to roll your own analytics system. Several of the analytics platforms out there (Google's analytics, Flurry, etc) allow you to technically submit this information via custom events but be aware the user agreements might prohibit you from doing it.
Note that you if want accurate statistics, an I'm assuming you do, you need to carefully determine when to submit or resubmit the information to your analytics platform, otherwise, you can end with very inaccurate data.

Workaround to lack of promotional codes for in-app purchases

Apple doesn't offer promotional codes for in-app purchases. What's the best way to let users try the features or content unlocked by in-app purchases for free, while complying with Apple's Developer Guidelines?
The idea is to allow a special set of users (reviewers, key fans, etc.) to access the content or features offered as in-app purchases without paying.
Examples of apps that worked around this limitation would be much appreciated.
You could submit a version of your application that has all features unlocked by default.
Submitted apps have a publish date that you can set when you submit (and I believe you can change this on the fly as well) you could simply prevent the app from being published in the App store but still be able to give promotional codes for it.
Promo codes apply to a specific app version, so when users redeem promo codes for a version of an app that hasn’t been released yet, they download the prerelease version.
Source
Something like shareware? An app, that has a subset of features enabled until in-app purchase? Apple allows it now.
As example. We've a puzzle game, that has 12 difficulty levels. 4 or 5 of them are available for free and others are unlocked after in-app purchase.
I'm working on this now.
What I'm doing is I generate a random code/guid and store that on my webService's DB. Then give that code to who ever you want. They enter that code and it calls the web service passing the code, and device UDID. The webService returns another code indicating if that promocode was valid. If valid then the app will add that purchase to NSUserDefaults or Core Data (however you keep track of purchases).
If you don't have a server up and running (say the content is already in the app bundle) and you don't want a server would require you making an algorithm to generate keys that your app validates. However this is far less robust. Using a web service allows you to prevent 1 working key from being distributed between all users, as you can tie 1 promo code to 1 device.

iPhone app without AppStore

We have an industrial app that currently runs on a very expensive ruggedized PDA.
Since most of the engineers we sell to have iPhones we are considering moving to the much nicer newer platform.
A couple of questions:
Is it possible to sell iPhone apps with out the app store? Apple taking a 40% cut of a 99c iFart app is one thing but this is a $3000 engineering calculation app. We have also heard of the hassles some people have had getting apps approved.
Can we sell an iPod touch (I understand selling an iPhone without a contract is trickier) with pre-packaged software.
ps. Sorry for the anonymous posting, the company is a little nervous about our relationship with the PDA maker.
There are basically three different official iPhone application distribution methods that I am aware of:
- App store
With this method anyone with an iPhone can have access to the application. You can distribute an unlimited number of applications like this. Apple gets a 30% cut. Of course Apple must approve your applicaion.
- Ad hoc
You can distribute applications using ad hoc without going through the app store, but you are limited to a maximum of 100 devices. With this method you can distribute you application from a web site, email, etc.
- Enterprise
The method is for internal distribution in companies with more than 500 employees. Apple does not provide any more public detail that I could find on this method.
It doesn't sound like any of these methods meet your criteria unless you have fewer than 100 customers and don't plan to exceed that number. It sounds like from the question your customers are not internal to your company.
I would advise contacting Apple. They might be able to work out some kind of custom distribution deal.
Enterprise developer program allows in house distribution, avoiding the appstore. It's $299 vs $99 and doesn't include AppStore distribution.
For companies with 500 or more employees who are creating proprietary in-house applications for iPhone and iPod touch.
Apple also has a B2B Program, which sound like you are aiming for. It allows you to sell your apps directly to other businesses. You can find out more here: https://developer.apple.com/programs/volume/b2b/
Spotify has a free app you can download, but to use it you have to have a Premium account. So you don't have to sell your app for $3000 to go thru the app store.
You can give the app for free in Appstore, but it will require an online activation. The online activation will cost 3000$. If apple would not accept the app, you can try to create a very limited version (without activation) and get it accepted in appstore. Then release un update for it, which will enable online activation system.
It's a pity - the iPhone/iPod touch could make a really nice platform for automation/interface stuff.
I was working on an embedded industrial platform recently - a 16bit micro, 64K memory, a serial port and a 120x128 2 grey level screen for $1000/unit and $10,000 for the appalling OS/devkit.
I can't see how apple could possibly care if you purchase iPod touches, jailbroke them, installed your app and sold them to customers.
For a $3k app, the $220 for an iPod Touch is less than 10% of the sales price.
Testflight. Google it. Basically you get an account with testflight. Put your app on testflight. You send your customer an email and they click it on their iphone. It sends testflight an email with your customers device ID. Testflight sends you an email saying "a New customer requested your app" and their device ID. You add their device ID to your provisioning chain and rebuild your App. Upload it to testflight, they get a notification that it's ready, and they can install it. Somewhere in there be sure to get your money :)
Native app, no. However, you can create it as a Web App that's specialized for the iPhone, in which case you circumvent the app store altogether.
You could consider a HTML5 app on Safari which offers many of the features of an app like offline access, local storage, canvas for rich graphics etc. No distribution issues and no commission. Depends what you need - access to camera, compass I think is not possible. (Also: works on Android)
Edit:
Here's a great intro -
http://sixrevisions.com/web-development/html5-iphone-app/
How to Make an HTML5 iPhone App
Build a version of Tetris that is "for the most part, it’s going to be a pitch-perfect imitation"
Full Screen
Offline Cache
Persistent storage
If your app is pretty expensive, you probably have few customers and they receive personal support, so what you could do is the following:
Have each customer get their own Apple developer license ($99/year). Your support can talk them through the process, or you can probably do it for them. Give them a discount/credit for the $99 they pay to Apple.
Compile your apps logic into a library, and make a thin shell that loads code from the library.
Give the customer the XCode project for this shell, and the binaries for your code :-). Write a little OS X app that triggers the download of XCode, the compilation, and installation, so they can "compile" and deploy "the app they are developing" (a.k.a. your app) to their devices. Or, do it as a service for them.
Don't forget to get your lawyers involved. I'm sure there are ways to look at it in which this is legal, and interpretations in which this violates some license. There is probably a way to make this waterproof, e.g. by calling your customers "developers" and yourself "consultants" in the contract or something. Helping a customer compile their app is not prohibited :-)
If you do this, deployment is not going to be so smooth as if you go the official way, but you'll save a lot of money. For a $3000 app, instead of 30% you'll give Apple 3.33%. I haven't done this, and I don't know anybody who has, and can't even recommend it, but I also can't see why it wouldn't work. So it might be worth a try.
I wish. Short answer, no.
There is some kind of a hack, whereby you isntall your app in a ad hoc manner, but you can only have 100 devices. Painful road if you ask me.
The way to do this would be to give the app for free in iOs store.
But charge $3000 for an activation code or subscription fee purchased from your website.
You will need to give the free app some basic functionality of some kind, however. Apple won't approve the app if it doesn't do anything without the activation code.
If it was me I would do one of the follow:
1) Submit it to Apple and sell it for free. They then enter a license code bought from you to access the full feature set. Include a welcome page, about us, contact page for unlicensed functionality. As Apple won't approve it if it does nothing.
2) Get the companies you're selling to to open an Enterprise account with Apple. Then you build the IPA and sign it using their credentials and send them the IPA.
Good luck.
This article summarizes all the answers to this question and discusses Apple's B2B, iOS developer enterprise program, adhoc distribution and testflight.
http://mobiledan.net/2012/03/02/5-options-for-distributing-ios-apps-to-a-limited-audience-legally/
All of the solutions (except the test-oriented solutions, which are limited), however, force you to get Apple's approval before publishing and updating. This process can take time and can leave your users stranded when you have a critical bug that needs a quick update.
If this is a deal breaker for you, you might want to try developing the app for Android, which also has advantages and drawbacks, but in your specific case, gives you more flexibility.
In Android, you can email an APK file, a user clicks it, and the app gets installed on the device.
In iOS, every devices that is not a member of the "enterprise program", "b2b" program or is provisioned for testing, cannot install the app.
You have to jailbreak the iPhone to put an app on it not from the app store.