Making Better Decisions Based On Tracking Data

After a long wait, finally it’s my time to contribute to #iDevBlogADay!

Today I won’t talk about anything too technical. Instead, I’ll talk about how to make better decisions based on data in my iphone app development experience. Be more specific, how to leverage the power of Google Analytics.

There are plenty of tutorials online about how to do the integration, such as Google’s own doc, or this one from icode blog, so I don’t want to repeat that. My focus will be what data I track, what I have learned from that, and how these data have impacted my decisions.

1. A Little Bit Background

penguinlinks_free

In June 2010, I released my two iphone games “Penguin Links“, lite and full version (the latest version is available in app store at: http://itunes.apple.com/app/id443106263). After that, I had two updates followed in August and October.

In US, they are not very successful; but in China, they did become very popular for a while. I used Google Analytics to track user behavior from the very beginning, and have learned a lot from that. That’s what I want to share in this post.

2. Visitor(Player) Track

This probably is the most important thing to track for an iPhone app. If you just want to track a “visit”, which means somebody opening/exiting the app, you don’t have to do much. All you need to do is when the app starts, in “- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions”, call:

[[GANTracker sharedTracker] startTrackerWithAccountID:GOOGLE_ANALYTICS_TRACK_ID
                                       dispatchPeriod:-1 delegate:self];

And in “- (void)applicationWillTerminate:(UIApplication *)application” (or “- (void) applicationDidEnterBackground:(UIApplication *)application” for iOS 4), call:

[[GANTracker sharedTracker] stopTracker];

(Please note that I set “dispatchPeriod” to -1, which means I always dispatch the analytic data manually.)

In this way, Google Analytics will automatically track when the session starts, when it ends, where the user is from, is it a new or returned customer, how long is the session, what device (very basic information about device) they use, even the mobile carrier.

Following is the visitor trend for my Penguin Links game from the day it was released to last weekend.

screen-shot-2011-06-29-at-100549-am

As you can see, the traffic had a huge jump two weeks after the release. I still remember I thought Google Analytics must have gone crazy, until I found out my game had become the #2 overall app (not just games) in China! After learning that, I quickly released an updated version with Chinese localization.

Another interesting thing to see is how engaging the game is. The average time played per session is a good indicator for that. Following is the graph for my game from Aug. 2010 (I didn’t include Jun. and Jul. 2010 because too many new users introduced too much noise).

screen-shot-2011-06-29-at-102954-am

It’s clear that while the number of total players drops, the average play time per session actually grows from 23 mins / session in Aug. 1st, 2010 to almost 45 mins / session recently. That’s reasonable since when more players stop playing, the ones left are more engaged players. And playing for 45 mins per session on average? That’s actually very encouraging! From the data I can clearly tell, for people who likes it, the game is not bad at all.

Then why didn’t it fly in US?

3. Event Tracking and Advanced Segment

To figure out that, I need more data — in Google Analytics, that is called event tracking, the tracking result can be found in the “Content” section on the left side. In event tracking, you need to define category, action, label and value for each event. In my game, there are six levels: Elementary, High School, SAT, College, GRE and Grad School. I wanted to know for each level, how are my players doing — is it too difficult or too easy? which level do they play the most? To achieve that, in my tracking data, I use “GAME_OVER” as a category, which contains actions such as “Elementary Success”, “Elementary Fail”, …  I also want to know if there is any different behavior between Chinese players and US players, since my game was fairly popular in China, but didn’t make any splash in US. To do that, I use “Advanced Segments” on Google Analytics. To define an “Advanced Segment”, you need to specify some filters to include only the traffic you are interested. You can use logical statement such as “AND” or “OR” to connect several filters together. In my case, I just need to define “US iPhone Traffic” as “Country/Territory contains United States”, and “China iPhone Traffic” as “Country/Territory contains China”. Once this is done, I can compare the data easily.

China iPhone Traffic

China iPhone Traffic
China iPhone Traffic

US iPhone Traffic

US iPhone Traffic
US iPhone Traffic

From the data we can see clearly, the biggest differences between Chinese players and US players are:

  • 61% Chinese players play college level, but only less than 49% US players do the same;
  • For all the levels, Chinese players’ success rates are: 6.7% (College), 28.7% (High School), and  46.9%(Elementary); and for US players, they are: 3.2% (College), 40% (High School) and 25.2% (Elementary).

Clearly Chinese players play more advanced levels (College) and have higher success rate (6.7% vs. 3.2%), and US players play the intermedium level (High School) more and have better success rate there. The most interesting part is the Elementary level, which is the entry level for this game. At this level, Chinese players performed much better: success rate is 47% vs US’ 25%.

Why? It’s not that Chinese people are better game players, it’s because this type of game is already very well-known in China. There is no learning curve, and most players can start playing immediately after downloading. But in US, this is pretty much a brand new game, so the learning curve is deep.

I know there are many reasons why a game didn’t fly, but after looking at these data, I know one of them is the learning curve. If I want it to be successfully in US, I must make it easier to understand, easier to start. So, in my recently finished second version of this game, Penguin Links 2, which was just submitted to App Store a few days ago and still waiting for review, I specifically added a new level called “Kindergarten”, which is basically an interactive tutorial, and some other much easier levels, to make people new to this game understand the concept quickly.

4. What Devices/OSes to Support

Comparing with Android developers, we are really lucky that we don’t have to deal with the fragmented market. But we still need to make decisions on when to drop support on a specific device or OS version. With Google Analytics data, that decision is a lot easier to make. Google Analytics tracks device type itself, but that information is too basic to use. To get better information, I have to do it myself.

As to parsing device information, Erica Sadun’s UIDevice extension is the best I’ve ever seen. What I did was at each game starting, sending the device model (iPhone 3G/3GS/4 …) and iOS version to Google Analytics. Following are the examples for iOS version tracking.

iOS Versions (8/1/2010 – 11/30/2010)

 

iOS Versions (8/1/2010 - 11/30/2010)

iOS Versions (8/1/2010 – 11/30/2010)

iOS Versions (3/1/2011 – 6/29/2011)

 

iOS Versions (3/1/2011 - 6/29/2011)

iOS Versions (3/1/2011 – 6/29/2011)

Above two graphs show the distribution of iOS versions. The first one is between 8/1/2010 to 11/30/2010, the second one is between 3/1/2011 to 6/29/2011. As you can see, the percentage of iOS 4 has jumped from 32% seven months ago to about 65% today. Most importantly, I know iOS 3.1 is still playing a role among my users (about 27% recently), so I’d better not to drop my support for them. I also did similar things to the device model data, hence I know I don’t have to care iPhone 1/3G and iPod 1G too much.

Not only you can make better product decisions with these data, you can also find some really fun facts from it. For example, do you know players from which country plays the longest time per session? It’s Australia! They play average 1 hour and 5 minutes per session! Do you know which day of the week people play my game the least? It’s Wednesday. I guess everybody is under work pressure on that day. Which US city downloaded my game the most? You got it, It’s New York City.

With the latest Google Analytics 1.2 library, you can track even more data now. For example, you can use Ecommerce Tracking to track your in-app purchase …

OK, I think I have talked too much. Thank you for your patience for coming this far. In short, by leveraging the power of data tracking (such as Google Analytics), you can make better, informed decisions in your iPhone development. And finally bellow are the before (Penguin Links) and after (Penguin Links 2) of the home screen/icons of my games — you can see the difference. When my new game is available , I’ll post an update. So check back soon.

Penguin Links Icon

Penguin Links Icon

Penguin Links 2 Icon

Penguin Links 2 Icon

mzlnkosekfh320x480-75

Penguin Links

mzldqlpqinu

Penguin Links 2

 

 
Add a comment

Comments (7)

  1. yuchen, July 27, 2011
    @Don, I created two events, one is track_os, the other is track_device_model. In the action field, I put in os version or device model name, -- I know, they are not actions, but I usually put my game version number in the label field and number of sessions played in the value field. In this way, I know the exact distribution of os/model, and for each version/model, what versions of my game they play and how often they play, which are very valuable to me. Reply
  2. Don, July 27, 2011
    What GAN method did you use for tracking the device model and iOS version? Did you pass your own model/version string to trackEvent as a label? Thanks for any advice, - Don Reply
  3. yuchen, July 14, 2011
    @stefan: thanks for the information. do you know any extra features from flurry comparing to google? Reply
  4. Stefan, July 14, 2011
    Hi, after reading your post I realized that you implemented many features that Flurry offers. Maybe it would have been easier to add a lib and send a few events. Since Flurry is very wide spread they also present you with benchmarking features that you don't have with your solution. Maybe worth a look http://www.flurry.com/ (I am not affiliated with Flurry - just a happy user). Reply
  5. yuchen, July 5, 2011
    @marcio Thanks for the comments. The new version of my app was just approved, so I removed the old one. Here is the link for the new one in case you are interested: http://itunes.apple.com/app/id443106263 . Since I also track new users, so based on the number of downloads from itunes connect, the percentage of tracked users is more than 90% for US. For other countries, it's harder to say since there are more pirated copies. But overall, I believe the percentage should be more than 80%. To me, GA is mostly for knowing the behavior of my users. So the percentage doesn't matter to me that much as long as it is not too low. Reply
  6. Hi. It is a very interesting post. I think the number of tracked users are not the same that have downloaded your application. Do you have an idea about the percentage they represent? I'm curious because many people don't like to stay connected (in many countries it's too expensive). By the way, I tried to take a look at your game but I got the following error from iTunes: "Your request could not be completed. The item you've requested is not currently available in the US store." Regards. Reply
  7. Lance, June 30, 2011
    Great information and excellent first post for #iDevBlogADay. I look forward to your future articles. Reply

Add a comment

Top
(it will not be shared)