<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mundue Blog &#187; App Store</title>
	<atom:link href="http://blog.mundue.net/category/app-store/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mundue.net</link>
	<description>Indie iPhone Development</description>
	<lastBuildDate>Sat, 03 Sep 2011 23:20:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>3 Years On The App Store</title>
		<link>http://blog.mundue.net/2011/07/3-years-on-the-app-store/</link>
		<comments>http://blog.mundue.net/2011/07/3-years-on-the-app-store/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 23:00:00 +0000</pubDate>
		<dc:creator>mundue</dc:creator>
				<category><![CDATA[App Store]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://blog.mundue.net/?p=432</guid>
		<description><![CDATA[This week marks the 3rd anniversary of the App Store launch. It sounds, and feels like a lifetime ago. It&#8217;s sometimes hard to remember how &#8220;unconnected&#8221; our lives were before the iPhone, but I can say that prior to June of 2007 I absolutely hated every cell phone I owned. There was the Qualcomm clunker, [...]]]></description>
			<content:encoded><![CDATA[<p>This week marks the 3rd anniversary of the App Store launch. It sounds, and feels like a lifetime ago. It&#8217;s sometimes hard to remember how &#8220;unconnected&#8221; our lives were before the iPhone, but I can say that prior to June of 2007 I absolutely hated every cell phone I owned. There was the Qualcomm clunker, the Motorola junker, the Samsung clamshell, etc. More often than not the phone was merely a device to slap the carrier&#8217;s label on to. People got a &#8220;verizon phone,&#8221; or an &#8220;at&amp;t phone&#8221; if you lived in the U.S. We were, and still are, captives of the telcos, but that&#8217;s starting to change finally.</p>
<p><span id="more-432"></span>
<p>When the App Store opened, I dreamed of working for myself. After 26 years of service in academia and Corporate America I was tiring of enormous org charts and meaningless schedules. It took a little bit of time, but in late 2009 I finally quit my last day job. By then we had built up a little stable of apps, and the income was starting to pick up. I&#8217;ll never regret that decision, as many indie developers will tell you: once you work for yourself you&#8217;ll never want to go back to working for &#8216;the man&#8217;.</p>
<p>Year three on the App Store was an exciting one for us. Mundue apps have now been downloaded a total of 9.2 million times, about 95% of which are free apps. We released two new iOS apps this past year, and are working on a few more at the moment, and also created Mac and Android versions of reMovem. I gave a talk on ad network mediation at the Austin 360iDev conference, and met many new friends there and at other conferences. If you have the opportunity to attend the next 360iDev, this September in <a href="http://360idev.com/">Denver</a>, I highly recommend that you do so.</p>
<p>So what will year four be like? I&#8217;m very optimistic about the upcoming changes in iOS 5. With the sales of iOS devices still very strong, it looks like the next year or two will be even better for app developers. With over 400,000 apps in the store, the bad news is that your piece of the pie is constantly shrinking, but the good news is that the pie keeps growing ever larger with no slowdown in sight.</p>
<hr />
<p style="font-family: 'Lucida Grande';"><em>This post is part of </em><a href="http://idevblogaday.com/"><em>iDevBlogADay</em></a><em>, a group of indie iOS development blogs featuring two new posts per day. You can keep up with iDevBlogADay through the </em><a href="http://idevblogaday.com/"><em>web site</em></a><em>,</em><a href="http://feeds.feedburner.com/idevblogaday"><em>RSS feed</em></a><em>, or </em><a href="http://twitter.com/#search?q=%23idevblogaday"><em>Twitter</em></a><em>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mundue.net/2011/07/3-years-on-the-app-store/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Prompting for Reviews</title>
		<link>http://blog.mundue.net/2011/05/prompting-for-reviews/</link>
		<comments>http://blog.mundue.net/2011/05/prompting-for-reviews/#comments</comments>
		<pubDate>Mon, 09 May 2011 16:00:00 +0000</pubDate>
		<dc:creator>mundue</dc:creator>
				<category><![CDATA[App Store]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://blog.mundue.net/?p=362</guid>
		<description><![CDATA[Like pay-to-play or in-app ads, prompting for a rating is controversial in that some developers frown upon it. Free apps tend to have an average 3 star rating. People rarely bother to go back to the App Store to rate an app. There&#8217;s always a small minority that will go out of their way to [...]]]></description>
			<content:encoded><![CDATA[<p>Like pay-to-play or in-app ads, prompting for a rating is controversial in that some developers frown upon it. Free apps tend to have an average 3 star rating.  People rarely bother to go back to the App Store to rate an app. There&#8217;s always a small minority that will go out of their way to provide negative reviews. So why not solicit positive feedback by providing a reminder to rate the game? In my opinion, there&#8217;s nothing overtly annoying or obnoxious about presenting an alert view that can easily be dismissed.</p>
<p><span id="more-362"></span></p>
<p>I rolled my own code to prompt users for a review and the results have been excellent. We&#8217;re now getting mostly 4 and 5 star ratings in the prompt-enabled apps. The key of course is in the timing of the prompts. I&#8217;ll explain a little about how the code works, then discuss the results so far. For a far better complete code template and explanation see also Noel Llopis&#8217;s <a href="http://gamesfromwithin.com/increase-your-app-ratings-on-the-app-store">blog post</a> from last year.</p>
<p>Since the stated objective is to get positive feedback without annoying the user, we want to filter out people who have just launched the app for the first time. One way to do this would be to use a timer, maybe wait until some period of time has elapsed. That&#8217;s probably OK, but could lead to a prompt coming up at a truly random time. Instead I have code that checks for two things: time elapsed plus a new high score achieved. To detect a desired length of time, use something like this in your -[UIApplicationDelegate application:didFinishLaunchingWithOptions:] method:</p>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="color: #033efc;">if</span> (![defaults <span style="color: #3b95ae;">objectForKey</span>:<span style="color: #033efc;">kFirstRunKey</span>]) {</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3b95ae;"><span style="color: #000000;">    [defaults </span>setObject<span style="color: #000000;">:[</span>NSDate<span style="color: #000000;"> </span>date<span style="color: #000000;">] </span>forKey<span style="color: #000000;">:</span><span style="color: #033efc;">kFirstRunKey</span><span style="color: #000000;">];</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3b95ae;"><span style="color: #000000;">}</span></pre>
<p>This gives you the timestamp of the first run time. I typically define kFirstRunKey to include a unique version number, so I can record the first run of each update. Now each time a new high score (use whatever criteria you see fit) is achieved, check the current time against the first run timestamp, like this:</p>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">- (<span style="color: #033efc;">void</span>) askToRateApp {</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #0c8e12;"><span style="color: #000000;"><span style="white-space: pre;"> </span><span style="color: #033efc;">if</span> ( ![<span style="color: #033efc;">self</span> <span style="color: #3b95ae;">reachable</span>] )</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #033efc;"><span style="color: #000000;"><span style="white-space: pre;">   </span></span>return<span style="color: #000000;">;</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3b95ae;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span>NSUserDefaults<span style="color: #000000;">* defaults = [</span>NSUserDefaults<span style="color: #000000;"> </span>standardUserDefaults<span style="color: #000000;">];</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #033efc;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span>if<span style="color: #000000;"> ( [defaults </span><span style="color: #3b95ae;">boolForKey</span><span style="color: #000000;">:</span>kAlreadyDeclinedToRateKey<span style="color: #000000;">] )</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #033efc;"><span style="color: #000000;"><span style="white-space: pre;">   </span></span>return<span style="color: #000000;">;</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3b95ae;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span>NSTimeInterval<span style="color: #000000;"> elapsed = [[</span>NSDate<span style="color: #000000;"> </span>date<span style="color: #000000;">] </span>timeIntervalSinceDate<span style="color: #000000;">:[defaults </span>objectForKey<span style="color: #000000;">:</span><span style="color: #033efc;">kFirstRunKey</span><span style="color: #000000;">]];</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #0c8e12;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #033efc;">if</span><span style="color: #000000;"> (elapsed &lt; </span><span style="color: #033efc;">kAskDelaySeconds</span><span style="color: #000000;"> )<span style="white-space: pre;"> </span></span>// approximately 1 day</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #033efc;"><span style="color: #000000;"><span style="white-space: pre;">   </span></span>return<span style="color: #000000;">;</span></pre>
<p>Notice a couple of interesting things here. First, I have a Reachability test to exit early if there&#8217;s no connection. Second, if the user has previously declined to rate the app, respect that choice and do nothing. Finally, there is a test to see if enough time has elapsed. If not, again do nothing. At this point you could prompt the user, or optionally add more tests. Maybe you only want to prompt on the 17th high score. Then something like this would work:</p>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="white-space: pre;"> </span><span style="color: #3b95ae;">NSInteger</span> showAsk = [defaults <span style="color: #3b95ae;">integerForKey</span>:<span style="color: #033efc;">kShowAskToRateKey</span>];</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #0c8e12;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span>// If showAsk is 0, the prompt screen will be shown.</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #0c8e12;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span>// If showAsk is &gt; 0, we decrement it now.</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="white-space: pre;"> </span><span style="color: #033efc;">if</span> ( showAsk == 0 ) {</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3b95ae;"><span style="color: #000000;"><span style="white-space: pre;">   </span></span>feedbackAlert<span style="color: #000000;"> = [[[</span>UIAlertView<span style="color: #000000;"> </span>alloc<span style="color: #000000;">] </span>initWithTitle<span style="color: #000000;">:</span><span style="color: #033efc;">NSLocalizedString</span><span style="color: #000000;">(</span><span style="color: #b12620;">@"AskToRateApp"</span><span style="color: #000000;">,</span><span style="color: #b12620;">@""</span><span style="color: #000000;">) </span>message<span style="color: #000000;">:</span><span style="color: #033efc;">nil </span><span style="color: #000000;"><span style="color: #3b95ae;">delegate</span>:<span style="color: #033efc;">self </span></span><span style="color: #000000;"><span style="color: #3b95ae;">cancelButtonTitle</span>:<span style="color: #033efc;">NSLocalizedString</span>(<span style="color: #b12620;">@"NoThanks"</span>,<span style="color: #b12620;">@""</span>) <span style="color: #033efc;"><span style="color: #3b95ae;">otherButtonTitles</span><span style="color: #000000;">:</span>NSLocalizedString<span style="color: #000000;">(</span><span style="color: #b12620;">@"RateNow"</span><span style="color: #000000;">,</span><span style="color: #b12620;">@""</span><span style="color: #000000;">), </span>NSLocalizedString<span style="color: #000000;">(</span><span style="color: #b12620;">@"RemindLater"</span><span style="color: #000000;">,</span><span style="color: #b12620;">@""</span><span style="color: #000000;">), </span>nil<span style="color: #000000;">] </span></span><span style="color: #3b95ae;">autorelease<span style="color: #000000;">];</span></span></span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3b95ae;"><span style="color: #000000;"><span style="white-space: pre;">   </span>[</span>feedbackAlert<span style="color: #000000;"> </span>show<span style="color: #000000;">];</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="white-space: pre;"> </span>} <span style="color: #033efc;">else</span> {</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="white-space: pre;">   </span>showAsk = (showAsk - 1) ;</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="white-space: pre;">   </span>[defaults <span style="color: #3b95ae;">setInteger</span>:showAsk <span style="color: #3b95ae;">forKey</span>:<span style="color: #033efc;">kShowAskToRateKey</span>];</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="white-space: pre;"> </span>}</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">}</pre>
<p>In this example, the showAsk variable is tested to see if the counter is zero. If it is, we show the feedback alert. Otherwise we decrement it and store it back in the default settings for next time. Set a reasonable initial value for kShowAskToRateKey. Once the saved value reaches zero, the alert will be shown exactly once. All that&#8217;s left to do is handle the buttons on the feedback alert.</p>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">- (<span style="color: #033efc;">void</span>)alertView:(<span style="color: #3b95ae;">UIAlertView</span> *)alertView clickedButtonAtIndex:(<span style="color: #3b95ae;">NSInteger</span>)buttonIndex</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">{</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">  <span style="color: #033efc;">if</span> ( alertView == <span style="color: #3b95ae;">feedbackAlert</span> ) {</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3b95ae;"><span style="color: #000000;">    </span>NSUserDefaults<span style="color: #000000;">* defaults = [</span>NSUserDefaults<span style="color: #000000;"> </span>standardUserDefaults<span style="color: #000000;">];</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="white-space: pre;">    </span><span style="color: #033efc;">if</span> ( buttonIndex == 0 ) {</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #0c8e12;"><span style="color: #000000;"><span style="white-space: pre;">      </span></span>// No Thanks</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3b95ae;"><span style="color: #000000;">      </span><span style="color: #0c8e12;">// Don't Ask Anymore</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #033efc;"><span style="color: #000000;"><span style="white-space: pre;">      </span>[defaults </span><span style="color: #3b95ae;">setBool</span><span style="color: #000000;">:</span>YES<span style="color: #000000;"> </span><span style="color: #3b95ae;">forKey</span><span style="color: #000000;">:</span>kAlreadyDeclinedToRateKey<span style="color: #000000;">];</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">    } <span style="color: #033efc;">else</span> <span style="color: #033efc;">if</span> ( buttonIndex == 1 ){</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #0c8e12;"><span style="color: #000000;"><span style="white-space: pre;">      </span></span>// Rate Now...</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3b95ae;"><span style="color: #0c8e12;"><span style="color: #000000;"><span style="white-space: pre;">      </span></span>// and Don't Ask Anymore</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #033efc;"><span style="color: #000000;"><span style="white-space: pre;">      </span>[defaults </span><span style="color: #3b95ae;">setBool</span><span style="color: #000000;">:</span>YES<span style="color: #000000;"> </span><span style="color: #3b95ae;">forKey</span><span style="color: #000000;">:</span>kAlreadyDeclinedToRateKey<span style="color: #000000;">];</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3b95ae;"><span style="color: #000000;"><span style="white-space: pre;">      </span>[</span>self<span style="color: #000000;"> </span>showAppStoreReviewPage<span style="color: #000000;">];</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px;"><span style="white-space: pre;">    </span>} <span style="color: #033efc;">else</span> <span style="color: #033efc;">if</span> ( buttonIndex == 2 ) {</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #0c8e12;"><span style="color: #000000;"><span style="white-space: pre;">      </span></span>// Remind Me Later</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3b95ae;"><span style="color: #000000;"><span style="white-space: pre;">      </span>[defaults <span style="color: #3b95ae;">setInteger</span>:21 <span style="color: #3b95ae;">forKey</span>:<span style="color: #033efc;">kShowAskToRateKey</span>];</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="white-space: pre;">    </span>}</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3b95ae;"><span style="color: #000000;"><span style="white-space: pre;">    </span></span>feedbackAlert<span style="color: #000000;"> = </span><span style="color: #033efc;">nil</span><span style="color: #000000;">;</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="white-space: pre;">  </span>}</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">}</pre>
<p>For the &#8220;remind later&#8221; choice here, I&#8217;m resetting the kShowAskToRateKey to 21, but this can be any value you like. I recommend you use analytics or some other method to determine an appropriate measure of how much time is &#8220;later.&#8221; FInally you need a small piece of code to make the App Store review page show. This technique can be used on iPhone, iPod touch, iPad, and Mac, but on iPad and Mac it is not possible to go directly to the review page. You&#8217;ll go instead to the App description and may want to explain how to actually enter a rating or review in those cases.</p>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">- (<span style="color: #033efc;">void</span>) showAppStoreReviewPage {</pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="color: #000000;">  [[</span>UIApplication<span style="color: #000000;"> </span>sharedApplication<span style="color: #000000;">] </span>openURL<span style="color: #000000;">:</span><span style="color: #000000;">[</span>NSURL<span style="color: #000000;"> </span>URLWithString<span style="color: #000000;">:</span>deepLinkReview<span style="color: #000000;">]</span><span style="color: #000000;">];</span></pre>
<pre style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">}</pre>
<p>For the deepLinkReview you will specify the URL that takes users to the application&#8217;s review page on iTunes. It&#8217;s pretty straightforward to construct the URL manually. Justine Pratt wrote all about this on <a href="http://creativealgorithms.com/blog/content/review-app-links-sorted-out">her blog</a> last year. You can also wrap the URL in a LinkShare link if you are an iTunes affiliate.</p>
<p>So how well does it work? Like Noel I have see an improvement in reMovem ratings from 3.5 stars to 4.5 stars, with about twice as many written reviews per day as there were a year ago. Still, 2 out of 3 users choose not to leave reviews. Of the rest, half opt for the &#8220;remind later&#8221; choice while about 15% click the &#8220;rate now&#8221; button. I suspect only a percentage of those actually complete the process, but it&#8217;s better than none. It&#8217;s debatable whether this leads to more sales, but having more 4 and 5 star reviews certainly helps when people are looking at the App Store description. I also believe they use the number of reviews as a gauge to an app&#8217;s popularity, and, in turn, as a data point for their purchasing decision. So the more reviews, the better.</p>
<p><img src="http://blog.mundue.net/wp-content/uploads/2011/05/appstoreNewImage.png" border="0" alt="NewImage" width="100%" /></p>
<p>&#8212;-</p>
<p><em>This post is part of </em><a href="http://idevblogaday.com/"><em>iDevBlogADay</em></a><em>, a group of indie iOS development blogs featuring two new posts per day. You can keep up with iDevBlogADay through the </em><a href="http://idevblogaday.com/"><em>web site</em></a><em>, </em><a href="http://feeds.feedburner.com/idevblogaday"><em>RSS feed</em></a><em>, or </em><a href="http://twitter.com/#search?q=%23idevblogaday"><em>Twitter</em></a><em>.</em></p>
<div><em><br />
</em></div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mundue.net/2011/05/prompting-for-reviews/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>One of the Good Guys</title>
		<link>http://blog.mundue.net/2011/04/agon-shutting-down/</link>
		<comments>http://blog.mundue.net/2011/04/agon-shutting-down/#comments</comments>
		<pubDate>Sun, 03 Apr 2011 01:00:00 +0000</pubDate>
		<dc:creator>mundue</dc:creator>
				<category><![CDATA[App Store]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.mundue.net/?p=359</guid>
		<description><![CDATA[We are sad to see that AGON Online is shutting down at the end of June. A couple of years ago when I was researching services for online leaderboards, I decided to use AGON for two of our holiday games. This was an easy choice on my part, because at the time Open Feint and [...]]]></description>
			<content:encoded><![CDATA[<p>We are sad to see that AGON Online is <a href="http://developer.agon-online.com/2011/03/31/agon-online-shutting-down/">shutting down</a> at the end of June. A couple of years ago when I was researching services for online leaderboards, I decided to use AGON for two of our holiday games. This was an easy choice on my part, because at the time Open Feint and Scoreloop were a little rough around the edges. Both have matured fantastically, of course, and with the advent of Game Center, the folks at Aptocore (makers of AGON Online) have felt the inevitable squeeze of the bigger competitors.</p>
<p><span id="more-359"></span>
<p>Nevertheless, from the very beginning it was a pleasure to deal with the folks at Aptocore. The system they built was easy to integrate and manage, and the SDK had an excellent Xcode-integrated documentation set. The support team was knowledgeable and courteous, and always very professional. We&#8217;ll miss working  with them, and wish them well in their future endeavors.</p>
<p>Many developers used AGON in some interesting games. A few of my favorites were: <a href="http://www.agon-online.com/game/B5BC216D4623B58FA1CBF91210C34675B2C132B8">Eyegore&#8217;s Eye Blast</a>, <a href="http://www.agon-online.com/game/C7DA2CB7EC4945D321DD91916BF08F6F62EC4AD0">Similis Deluxe</a>, <a href="http://www.agon-online.com/game/40AFF2509A0E39C2F070C5D20551252AC1274549">Sheepstacker</a>, <a href="http://www.agon-online.com/game/436F0B32FA219FA0090B247F00A879CFE34523A2">Popper</a>, <a href="http://www.agon-online.com/game/FF234B8CB1B660EA5F92D84465124EAE45138F1F">Inkvaders</a>, <a href="http://www.agon-online.com/game/8EAAE9D3CBAC135D810710BF8D55AE3E9939ACF8">SpringFling</a>, and <a href="http://www.agon-online.com/game/D51420932D9FEE5D052A2BCDA9BC2BC49E22A009">Azplode</a>. Check &#8216;em out!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mundue.net/2011/04/agon-shutting-down/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Improved Tracking Controller</title>
		<link>http://blog.mundue.net/2011/03/shared-tracking-controller-2/</link>
		<comments>http://blog.mundue.net/2011/03/shared-tracking-controller-2/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 21:00:00 +0000</pubDate>
		<dc:creator>mundue</dc:creator>
				<category><![CDATA[App Store]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.mundue.net/?p=349</guid>
		<description><![CDATA[A while back I wrote about adding code to support multiple analytics packages inside your apps. While updating that code for a talk I gave at a recent iPhone developer meetup I published the code on Github, so now it&#8217;s a little easier to use. Just download the analytics libraries you want to use and [...]]]></description>
			<content:encoded><![CDATA[<p>A while back I <a href="http://blog.mundue.net/2009/10/shared-tracking-controller/">wrote</a> about adding code to support multiple analytics packages inside your apps. While updating that code for a talk I gave at a recent iPhone developer meetup I published the code on Github, so now it&#8217;s a little easier to use. Just download the analytics libraries you want to use and add my wrapper classes to your application. It&#8217;s really that easy.</p>
<p>Full details on the new and improved MMTrackingController are on <a href="https://github.com/mundue/MMTrackingController">Github</a>. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mundue.net/2011/03/shared-tracking-controller-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prepping for Christmas</title>
		<link>http://blog.mundue.net/2010/12/prepping-for-christmas/</link>
		<comments>http://blog.mundue.net/2010/12/prepping-for-christmas/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 02:00:00 +0000</pubDate>
		<dc:creator>mundue</dc:creator>
				<category><![CDATA[App Store]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[iTunes Connect]]></category>

		<guid isPermaLink="false">http://blog.mundue.net/?p=328</guid>
		<description><![CDATA[As every seasoned iPhone developer knows, the Christmas season is Big. Retailers, online and physical, make most of their annual revenue in the fourth quarter. It&#8217;s not quite that lopsided for iDevs, but the rewards can be great, both before and after Christmas. As everyone knows now, Apple shuts off access to the iTunes Connect [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float: left;" title="snowman@2x.png" src="http://blog.mundue.net/wp-content/uploads/2010/12/appstoresnowman@2x.png" border="0" alt="snowman@2x.png" hspace="10" width="60" height="60" />As every seasoned iPhone developer knows, the Christmas season is <strong><em>Big</em></strong>. Retailers, online and physical, make most of their annual revenue in the fourth quarter. It&#8217;s not quite that lopsided for iDevs, but the rewards can be great, both before and after Christmas. As everyone knows now, Apple shuts off access to the iTunes Connect portal from December 23rd to 28th, meaning you must get all updates and price changes in effect by the 22nd.</p>
<p><span id="more-328"></span><strong> </strong></p>
<p><strong> </strong></p>
<p><strong></p>
<h3>&#8216;Tis the Season</h3>
<p></strong></p>
<p>In the run-up to Christmas, ad spending goes through the roof. Ad-supported apps typically see their eCPM double and triple during this period, but not across all ad networks. That&#8217;s why it&#8217;s important to use a 3rd-party mediation layer to <a href="http://blog.mundue.net/2010/09/optimizing-adwhirl-revenue/">maximize your ad revenue</a>. It&#8217;s interesting to pit the networks against each other, many promising campaigns of ultra-high returns (for an albeit short period). Being locked into a single ad network (even iAd) is not where you want to be during November and December.</p>
<p>Paid application developers struggle before Christmas with the onslaught of new&amp; holiday apps, and daily price reductions designed to increase presence on the App Store. Why? Because Apple will sell 10 million new iOS devices in the current quarter. With a few million new users on Christmas day <em><strong>alone</strong></em>, being in the right place on the App Store will spell the difference between it being a <em>big</em> day and <em>huge</em> day. In 2008 our paid apps doubled in sales on Christmas and the week after. In 2009 that difference was closer to 4x. While it would be nice to see that again, I don&#8217;t expect it; but we&#8217;re doing everything we can to boost our apps&#8217; positions.</p>
<h3>Getting There</h3>
<p>Recently we&#8217;ve written about raising prices and <a href="http://blog.mundue.net/2010/11/pricing-and-ranking-part-2/">maintaining a steady-ish revenue</a>. This works well under normal circumstances, but would probably relegate us to the lower levels of Christmas bumps. The games categories are just too competitive, there&#8217;s less perceived value in holding out at a higher price. In this case we want to time things such that a price reduction and other promotions conspire to give the highest rankings boost just before the 23rd. How come?</p>
<p>I&#8217;ll go out on a limb and speculate that most of our apps are purchased on-device. It&#8217;s just not that satisfying to buy apps on iTunes on your desktop computer. Unless you are drawn there from a review site or maybe a promo code, you&#8217;re probably spending most of your app-shopping time on the iPod touch or iPhone. And you&#8217;re a developer! Joe average citizen probably syncs his device  a couple times a month at most, and is not likely to wait around for iTunes to sync so he can enjoy a new purchase. If this is true, then the rankings on the App Store app on the device start to look very important. Especially that first &#8220;page&#8221; of 25 apps in each category. That&#8217;s where you want to be. That&#8217;s the magic page that will effectively boost your sales (free or paid) more so than being on the second or third page. Guess how many users <em>never</em> even tap on that &#8220;Twenty Five more&#8230;&#8221; button?</p>
<h3>Final Thoughts</h3>
<p>If you can get into that top 25, that&#8217;s great. Do what you need to do to stay there. If you&#8217;ve got truly awesome games, maybe a feature will help you along the way. I&#8217;m not that lucky. Advertising can help, some work better than others. We are trying out <a href="https://www.tapjoy.com/">Tapjoy</a> this year, and it looks very promising. Cross-promotion with other developers is also something we do throughout the year. Every little bit helps.</p>
<p>If you are in that sweet spot when Christmas arrives, you may choose to raise your price back to normal. This will certainly help your bottom line with the potential to reach millions of new customers in a very short time. Just remember to make that change before the 23rd, else you&#8217;ll be shut out of iTunes Connect and wondering what could have been.</p>
<p style="font-family: 'Lucida Grande';">&#8212;-</p>
<p style="font-family: 'Lucida Grande';"><em>This post is part of </em><a href="http://idevblogaday.com/"><em>iDevBlogADay</em></a><em>, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the </em><a href="http://idevblogaday.com/"><em>web site</em></a><em>, </em><a href="http://feeds.feedburner.com/idevblogaday"><em>RSS feed</em></a><em>, or </em><a href="http://twitter.com/#search?q=%23idevblogaday"><em>Twitter</em></a><em>.</em></p>
<p style="font-family: 'Lucida Grande';"><em><br />
</em></p>
<p><em> </em><em> </em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mundue.net/2010/12/prepping-for-christmas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Pricing and Ranking, Part 2</title>
		<link>http://blog.mundue.net/2010/11/pricing-and-ranking-part-2/</link>
		<comments>http://blog.mundue.net/2010/11/pricing-and-ranking-part-2/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 06:00:00 +0000</pubDate>
		<dc:creator>mundue</dc:creator>
				<category><![CDATA[App Store]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://blog.mundue.net/?p=310</guid>
		<description><![CDATA[Four weeks have elapsed since we raised the price of reMovem and the skies have not fallen. Yes, the daily rankings have taken a hit, but the revenue is holding steady and has even grown a tad. Interestingly, I haven&#8217;t had a single comment about the price change, and the ratings are still a solid [...]]]></description>
			<content:encoded><![CDATA[<p>Four weeks have elapsed since we raised the price of reMovem and the skies have not fallen. Yes, the daily rankings have taken a hit, but the revenue is holding steady and has even grown a tad. Interestingly, I haven&#8217;t had a single comment about the price change, and the ratings are still a solid 4-½ stars. We don&#8217;t consider this an experiment, but will closely monitor the results over the next few weeks to help decide if/when to lower the price again. If you&#8217;re curious about the effects of such a change on a stable mature app, then read on.</p>
<p><span id="more-310"></span></p>
<p><span style="font-family: 'Lucida Grande'; font-size: 14px; font-weight: bold;">Sales</span></p>
<p style="font-family: 'Lucida Grande';"><img title="sales2.jpg" src="http://blog.mundue.net/wp-content/uploads/2010/11/appstoresales2.jpg" border="0" alt="sales2.jpg" width="590" height="301" /></p>
<p style="font-family: 'Lucida Grande';">
<p style="font-family: 'Lucida Grande';">﻿With the tripling of the price the sales went down to 34.6% of the previous month. We didn&#8217;t change any other factors during this period, and kept up the usual amount of cross-promotion within the free version. Neither app was featured or advertised externally. During this time we faced an onslaught of new apps being featured and existing apps lowering their prices to gain a rise in rankings. That&#8217;s nothing new, but obviously can contribute to rankings fluctuations.</p>
<h3 style="font-family: 'Lucida Grande';">Revenue</h3>
<p style="font-family: 'Lucida Grande';"><span style="font-family: Helvetica;"><img title="NewImage.jpg" src="http://blog.mundue.net/wp-content/uploads/2010/11/appstoreNewImage.jpg" border="0" alt="NewImage.jpg" width="590" height="298" /></span></p>
<p style="font-family: 'Lucida Grande';"><span style="font-family: Helvetica;"> </span>Revenue has stayed extremely steady, in fact it&#8217;s up 3.3% in the October period shown. What&#8217;s immediately obvious is an increase in the daily volatility. There&#8217;s much wider swings from weekend to weekday. This seems to be the inverse of the sales drop change above, where the downloads fluctuate less at the lower rate. It would be interesting to compare this to other apps we have at different price points.</p>
<h3 style="font-family: 'Lucida Grande';">Top Paid Rankings</h3>
<p style="font-family: 'Lucida Grande';"><span style="font-family: Helvetica;"><img title="NewImage.jpg" src="http://blog.mundue.net/wp-content/uploads/2010/11/appstoreNewImage1.jpg" border="0" alt="NewImage.jpg" width="600" height="296" /></span></p>
<p style="font-family: 'Lucida Grande';">Rankings have been hit pretty hard. Red is Puzzle and green is Strategy. It seems safe to say they have dropped to 1/3 the previous month&#8217;s value, but my Majicrank data is unfortunately missing a few days. The rankings are important because they help to keep the app &#8220;visible&#8221; on the device, especially when the ranking is within that top 25. I figure the first page of apps in any category will contribute greatly, almost as much as a feature in some cases. For example, reMovem free is consistently in the top 25 for both Puzzle and Strategy, which drives enough downloads to sustain itself during periods of external pressure (paid-to-free and other promotions).</p>
<h3 style="font-family: 'Lucida Grande';">Top Grossing Rankings</h3>
<p style="font-family: 'Lucida Grande';"><span style="font-family: Helvetica;"><img title="NewImage.jpg" src="http://blog.mundue.net/wp-content/uploads/2010/11/appstoreNewImage2.jpg" border="0" alt="NewImage.jpg" width="600" height="298" /></span></p>
<p style="font-family: 'Lucida Grande';">Perhaps more telling (again, apologies for the spotty Majicrank data) is the top grossing ranks. This actually went up a bit, but has since dropped, though not nearly to the 1/3 level of the sales. Clearly, raising the price can lead to a sustained profitable rate. Of course, the downside to all this is: less users. In this era of &#8220;the power of free&#8221; where the goal is to get your app in as many hands as possible, we are not winning that battle. However, given that this is the paid part of the paid/free duo, and that we don&#8217;t yet have any lucrative IAP in either, this is OK.</p>
<p style="font-family: 'Lucida Grande';">﻿﻿&#8212;-</p>
<div style="font-family: 'Lucida Grande';"><span style="font-family: 'Lucida Grande';"><strong><span style="font-weight: normal;"><span style="font-family: arial, verdana, tahoma, sans-serif; font-size: 13px; line-height: 20px;"><em>﻿﻿This post is part of <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://idevblogaday.com/">iDevBlogADay</a>, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://idevblogaday.com/">web site</a>, <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://feeds.feedburner.com/idevblogaday">RSS feed</a>, or <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://twitter.com/#search?q=%23idevblogaday">Twitter</a>.</em></span></span></strong></span></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.mundue.net/2010/11/pricing-and-ranking-part-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ready For Sale</title>
		<link>http://blog.mundue.net/2010/10/ready-for-sale/</link>
		<comments>http://blog.mundue.net/2010/10/ready-for-sale/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 00:00:00 +0000</pubDate>
		<dc:creator>mundue</dc:creator>
				<category><![CDATA[App Store]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[iTunes Connect]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://blog.mundue.net/?p=289</guid>
		<description><![CDATA[I was going to write about how awful the current App Store review times are. I&#8217;d been waiting for an important update for 9 days, which seems about normal these days. I frankly expected it to take up to 14 days, which has unfortunately been more common lately. Then I got that happy email with [...]]]></description>
			<content:encoded><![CDATA[<p>I was going to write about how awful the current App Store review times are. I&#8217;d been waiting for an important update for 9 days, which seems about normal these days. I frankly expected it to take up to 14 days, which has unfortunately been more common lately. Then I got that happy email with those three magic words.</p>
<p><span id="more-289"></span></p>
<p>Over the past 28 months I&#8217;ve had 58 &#8220;Ready For Sale&#8221; emails from iTunes Store (I just counted). Even though 9 days sounds like a nice short time to wait, if you use it as an average review time, that&#8217;s 522 days for my 58 submissions. That&#8217;s about a year and a half. 522 days that you have to stage bug fixes and enhancements, work on other projects, hold your breath, and cross your fingers. It seems like a bit of a waste of time doesn&#8217;t it?</p>
<p>The system appears broken. Rather than attempt to fix the problem with lengthening review times, Apple has tweaked the status history to make it feel like the process has been improved somehow. Remember how the binary was uploaded and sat there for days, then got reviewed and approved pretty much within hours (figure 1)?</p>
<p><img style="float: left;" title="figure1.png" src="http://blog.mundue.net/wp-content/uploads/2010/10/appstorefigure12.png" border="0" alt="figure1.png" vspace="12" width="578" height="257" /></p>
<p>This doesn&#8217;t seem to be the case anymore. Nowadays your app is more than likely to go straight into &#8220;In Review&#8221; and sit there for a week or more. Did the process that took hours previously become one that takes days now? Seriously? (figure 2)</p>
<p><img style="float: left;" title="figure2.png" src="http://blog.mundue.net/wp-content/uploads/2010/10/appstorefigure25.png" border="0" alt="figure2.png" vspace="12" width="578" height="257" /></p>
<p>Given that the process is still basically a <a href="http://en.wikipedia.org/wiki/Black_box">black box</a>, we can only conclude that there&#8217;s an emphasis at Apple to get the updates into &#8220;In Review&#8221; state regardless of when they will eventually get reviewed. Maybe this helps with their stated review status percentages on the  <a href="https://developer.apple.com/news/">Developer News and Announcements</a> site. Perhaps it would be more helpful to show the average review times instead?</p>
<p>As for my apps, the last few had overall submission-&gt;approved times of 9 days, 10 days, 8 days, 11 days, and 8 days. That&#8217;s an average of 9.2 days, so my email today came right on schedule, it turns out. I should have planned for it. Today&#8217;s update? It&#8217;s for the free iPad app reMovem 2, and it includes iOS 4.2 compatibility (hope you are thinking about that) and 2 cool new themes designed by Mike Berg of <a href="http://twitter.com/weheartgames">@weheartgames</a> fame. Please check it out on <a href="http://itunes.apple.com/us/app/removem-2/id359766852?mt=8">iTunes</a> or the <a href="http://www.removem2.com">web</a>.</p>
<p>I&#8217;d love to hear from other developers with their submit-wait-suffer-approved tales. Are my wait times average or out of whack with your experiences?</p>
<p style="font-family: 'Lucida Grande';">﻿&#8212;-</p>
<div style="font-family: 'Lucida Grande';"><span style="font-family: 'Lucida Grande';"><strong><span style="font-weight: normal;"><span style="font-family: arial, verdana, tahoma, sans-serif; font-size: 13px; line-height: 20px;"><em>﻿﻿This post is part of <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://idevblogaday.com/">iDevBlogADay</a>, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://idevblogaday.com/">web site</a>, <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://feeds.feedburner.com/idevblogaday">RSS feed</a>, or <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://twitter.com/#search?q=%23idevblogaday">Twitter</a>.</em></span></span></strong></span></div>
<p style="font-family: 'Lucida Grande';"><span style="font-family: 'Lucida Grande';"> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mundue.net/2010/10/ready-for-sale/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>On Pricing And Ranking</title>
		<link>http://blog.mundue.net/2010/10/pricing-and-ranking/</link>
		<comments>http://blog.mundue.net/2010/10/pricing-and-ranking/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 16:00:00 +0000</pubDate>
		<dc:creator>mundue</dc:creator>
				<category><![CDATA[App Store]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://blog.mundue.net/?p=278</guid>
		<description><![CDATA[It&#8217;s widely assumed that lowering price can increase sales. In theory the lower the price, the larger the increase in sales. This can indeed offset the difference in price and possibly even increase bottom-line revenue. What happens when you raise the price instead? In the case of reMovem, not much. This app has never been [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s widely assumed that lowering price can increase sales. In theory the lower the price, the larger the increase in sales. This can indeed offset the difference in price and possibly even increase bottom-line revenue. What happens when you raise the price instead?</p>
<p><span id="more-278"></span></p>
<p>In the case of reMovem, not much. This app has never been featured but maintains a top-100 ranking in the Puzzle and Strategy categories for much of the last two years. There&#8217;s a significant upsell through the immensely popular free version, and any app that can snag a spot in the top 100 of any chart will attract a certain amount of traction. Reason? There are four &#8220;pages&#8221; of 25 apps that a user can see when perusing the App Store on an iPhone. This is the poor man&#8217;s feature, but it comes at a cost.</p>
<p>If your app is not one of the perennial favorites or currently featured somewhere by Apple you will need a low price just to crack a top 100 ranking. At $0.99 reMovem was very consistently in the 25-40 range for both Puzzle and Strategy (figure 1).</p>
<p><img title="figure1.png" src="http://blog.mundue.net/wp-content/uploads/2010/10/appstorefigure1.png" border="0" alt="figure1.png" width="558" height="289" /></p>
<p>reMovem seemed stuck at around #25, and there was no more leeway with the price, other than going free. We tried http://freeappaday.com/ in May and don&#8217;t want to do that again. Besides, with the regular free version, and a free Halloween version (and an upcoming free Christmas version), it seemed like a good time to differentiate more on price. It&#8217;s likely the price will go back down during the holiday feeding frenzy, but for now we hiked the price to $2.99. So, at 3 times the previous price, do sales fall to 1/3? Not quite (figure 2).</p>
<p><img title="figure2.png" src="http://blog.mundue.net/wp-content/uploads/2010/10/appstorefigure2.png" border="0" alt="figure2.png" width="544" height="318" /></p>
<p>Here&#8217;s where things get interesting. Though sales seem to plummet, they bounce back a bit. Although it&#8217;s too soon to say, there&#8217;s hope that the daily download will stabilize at a number above 1/3 the old number of downloads. This is great for the bottom line (revenue) which appears to be holding up nicely (figure 3).</p>
<p><img title="figure3.png" src="http://blog.mundue.net/wp-content/uploads/2010/10/appstorefigure3.png" border="0" alt="figure3.png" width="544" height="323" /></p>
<p>So in the short term, raising the price appears to boost the bottom line, at least in this instance. I think the new price is important, too. In the past we&#8217;ve juggled with a price between $0.99 and $3.99, all with different results. If you double the price you&#8217;ll see a similar drop-off to what we have illustrated here, but perhaps not much of a change in revenue. Perhaps a follow-up post will chronicle how this change pans out over the next few weeks.</p>
<p>Far more interesting is the effect of ranking. As you can see (figure 4) the rankings have taken a beating, but they&#8217;re still somewhere in the top 100. After falling to around 80 and stabilizing things seem to be in good shape. My fear was it would drop like a rock right off the charts. Usually we control the price to keep the app in the top 100, but it&#8217;s not entirely predictable. Also, not shown, the top grossing ranks have edged up slightly to near 50. These metrics may take more time to adjust, as they consider more than raw sales x price calculations.</p>
<p><img title="figure4.png" src="http://blog.mundue.net/wp-content/uploads/2010/10/appstorefigure4.png" border="0" alt="figure4.png" width="561" height="278" /></p>
<p>I had been fearing a spate of negative reviews over the price change, but so far only 4 and 5 star ratings continue. I heard somewhere that if nobody complains about the price you aren&#8217;t charging enough. Users that pay more for a product are more attached to that product and more likely to give it a good rating to justify their expense. A cheaper product lowers the barrier to complaints. Plus, we&#8217;ve been heavily promoting the prior &#8220;special&#8221; low price, so there are no excuses for those that waited, only regrets.</p>
<p>What we learned from this exercise is that:</p>
<ul>
<li>raising the price can hurt sales (but not kill them)</li>
<li>raising the price enough can overcome lost sales in revenue</li>
<li>raising the price can seriously hurt rankings (but not kill them)</li>
</ul>
<p>It&#8217;s way to early too draw serious conclusions from this experience, but we now have the wiggle room to lower the price again at a convenient time. This could be to coincide with an update, or to counteract any massive price drops elsewhere. We&#8217;ll see. It&#8217;s nice to have options.</p>
<p style="font-family: 'Lucida Grande';">﻿&#8212;-</p>
<div><span style="font-family: 'Lucida Grande';"><strong><span style="font-weight: normal;"><span style="font-family: arial, verdana, tahoma, sans-serif; font-size: 13px; line-height: 20px;"><em>﻿﻿This post is part of <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://idevblogaday.com/">iDevBlogADay</a>, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://idevblogaday.com/">web site</a>, <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://feeds.feedburner.com/idevblogaday">RSS feed</a>, or <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://twitter.com/#search?q=%23idevblogaday">Twitter</a>.</em></span></span></strong></span></div>
<p><span style="font-family: 'Lucida Grande';"> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mundue.net/2010/10/pricing-and-ranking/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Taking Care of Business</title>
		<link>http://blog.mundue.net/2010/10/t-c-b/</link>
		<comments>http://blog.mundue.net/2010/10/t-c-b/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 21:00:00 +0000</pubDate>
		<dc:creator>mundue</dc:creator>
				<category><![CDATA[App Store]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://blog.mundue.net/?p=264</guid>
		<description><![CDATA[As an indie developer it is sometimes easy to forget who I work for. I worked for many years as a salaried employee, usually for a large company, often with little contact with customers. In that environment compensation is more dependent on decisions made by others and corporate success as a whole. Now it&#8217;s a [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float: left;" title="TCB.png" src="http://blog.mundue.net/wp-content/uploads/2010/10/appstoreTCB.png" border="0" alt="TCB.png" hspace="10" width="50" height="80" />As an indie developer it is sometimes easy to forget who I work for. I worked for many years as a salaried employee, usually for a large company, often with little contact with customers. In that environment compensation is more dependent on decisions made by others and corporate success as a whole. Now it&#8217;s a different story. My income comes from many sources. I get “paid” by Apple, Google, LinkShare, etc. But I don&#8217;t work for any of them. I work for myself, but more precisely, for the iPhone customers who use our software. If we don&#8217;t keep them happy we don&#8217;t eat.</p>
<p><span id="more-264"></span></p>
<p>Keeping customers happy means more than just adding features or putting games on sale occasionally. Noel&#8217;s iDevBlogADay post last week about <a href="http://gamesfromwithin.com/communicating-with-players">communicating with users</a> got me to thinking. I&#8217;m not doing a great job of communicating with users, but it&#8217;s not all bad news. If you&#8217;re like me, you get many emails a week about some aspect of your product(s) from users. It&#8217;s tempting to dismiss the complaints, and developers know you can&#8217;t please everyone. But I&#8217;ve been working on &#8220;taking the high road,&#8221; and it seems to generally pay off.</p>
<p>What does this mean? I&#8217;ve written about recent <a href="http://blog.mundue.net/2010/09/change-is-hard/">product changes</a> and how the users react to them. I think in general there are far more players who like the changes than those who don&#8217;t, and we have metrics to validate that. People that respond to the prompt to rate/review an app are usually going to have good things to say. A few will spontaneously write bad reviews or leave the dreaded 1-star rating. I no longer lose (much) sleep over the latter, but when someone bothers to send a support email, I take it very seriously.</p>
<p>I&#8217;m not promising an instant reply. Other developers, even friends of mine, sometime take weeks to reply. I&#8217;ll usually get to it in a day or two. All the support emails typically fall into similar buckets that are easy to respond to.</p>
<blockquote><p>&#8220;Can&#8217;t get it to run.&#8221;</p>
<p>&#8220;How do you play the game?&#8221;</p>
<p>&#8220;I liked it better the old way&#8230;&#8221;</p></blockquote>
<p>These folks are typically happy with a simple explanation or offer of appeasement (promo codes work great!). Once in a while we&#8217;ll see an email from a truly angry user. If you handle these properly you can turn lemons into lemonade. This is where it pays to take the high road. Using a common sense approach will almost always work in your favor. Be respectful, be sincere, be accommodating wherever possible. If someone with an issue sees you being responsive they may very well change their opinion and even reverse a bad review or rating. I&#8217;ve seen this happen a number of times.</p>
<p>All it takes is patience. Here are a couple of examples of unhappy users who changed their minds. One guy wrote this email about our iPad game:</p>
<blockquote><p>Subject: reMovem with ads sucks</p>
<p>I paid for this app, not the advertising.</p></blockquote>
<p>What&#8217;s up with that? reMovem 2 is a free app. My response:</p>
<blockquote><p>Hi Bob, [not his real name]</p>
<p>reMovem 2 for iPad is free and always has been free. If you look at your receipt from Apple iTunes Store it shows a price of &#8220;free.&#8221; I use ads in my free apps and have never used ads in any of my paid apps.</p>
<p>In the future we may add an option to opt-out of ads with In App Purchase for reMovem 2.</p>
<p>It is frustrating as a developer to get bad ratings when they are undeserved. I do appreciate you writing to me so we could straighten this out.</p>
<p>Thanks,</p>
<p>-Matt</p></blockquote>
<p>I&#8217;m in the habit of using my name in support emails so folks know there&#8217;s a real person here. This generally leads to a more civil discourse. I also want to acknowledge the effort he took to write to us instead of just leaving a bad review. In this case, Bob was appreciative even though he stuck to his guns:</p>
<blockquote><p>Matt,</p>
<p>Then it&#8217;s my mistake and I apologize for the misunderstanding.  I do own the purchased iPhone version.  reMovem is one of my favorite apps and it was one of the first apps I downloaded for the iPad.  When I wrote to you, I assumed that had I paid for the iPad version, too.</p>
<p>The take-away is that there are people willing to pay for the app and avoid the ads.  The other take-away is that I &#8220;reMove-d-em&#8221; from my iPad and will not reinstall it until there is an ad-free version.</p>
<p>I really appreciated you response.</p>
<p>Thanks.</p>
<p>Bob</p></blockquote>
<p>Now we can agree to disagree, but I know that Bob is a loyal customer and have an idea of how to make him a repeat customer in the future. Win!</p>
<p>Here&#8217;s another example of someone who&#8217;s not happy with Apple&#8217;s spartan Game Center signin screen:</p>
<blockquote><p>I paid for this app to avoid annoying interruptions but get a stupid popup asking me to logon or create an account. I don&#8217;t want to do either but tapping cancel only gives me temporary relief. I get this popup several times each game. I will not be buying any more software from this company.</p>
<p>Sent from my iPhone 4</p></blockquote>
<p>Doesn&#8217;t look good. My response:</p>
<blockquote><p>Hi Joe, [again, not his real name]</p>
<p>Thanks for taking the time to write to us about reMovem. The &#8220;stupid popup&#8221; is for Apple&#8217;s Game Center feature, which lets us use online high score leaderboards. We wish Apple had a better interface too, but this is what we are stuck with at the moment. Chances are more of the games you like and use will support Game Center in the near future. For more information:</p>
<p>http://www.apple.com/iphone/features/game-center.html</p>
<p>In any case, it is very easy to turn off the Game Center features:</p>
<p>1. Go to the Info screen and turn off the Game Center switch at the bottom.</p>
<p>2. Quit and restart the game.</p>
<p>Note: On an iPhone 4, quitting requires more than just pressing the Home button. Let me know if you need further assistance.</p>
<p>Thanks,</p>
<p>-Matt</p></blockquote>
<p>Joe was also appreciative of my response and can now play the game he likes:</p>
<blockquote><p>I apologize for blaming the popup on your application. I have not seen it anywhere else. I turned it off and now it plays without interruption. Thank you for your help.</p></blockquote>
<p>There are many other examples, and this is not exactly rocket science, but I think you get the point. Treat the customers with respect, <em>even the angry and combative ones</em>, and they will respond in kind. These are the kind of users that will remember you made an effort to reach out to them. I don&#8217;t think Bob or Joe expected me to reply at all. But since they took the time to write, why not do my best to make them happy?</p>
<p>Take the high road, yeah!</p>
<p>&#8212;-</p>
<p><span style="font-family: 'Lucida Grande';"><strong><span style="font-weight: normal;"><span style="font-family: arial, verdana, tahoma, sans-serif; font-size: 13px; line-height: 20px;"><em>﻿This post is part of <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://idevblogaday.com/">iDevBlogADay</a>, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://idevblogaday.com/">web site</a>, <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://feeds.feedburner.com/idevblogaday">RSS feed</a>, or <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://twitter.com/#search?q=%23idevblogaday">Twitter</a>.</em></span></span></strong></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mundue.net/2010/10/t-c-b/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Change Is Hard</title>
		<link>http://blog.mundue.net/2010/09/change-is-hard/</link>
		<comments>http://blog.mundue.net/2010/09/change-is-hard/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 01:00:00 +0000</pubDate>
		<dc:creator>mundue</dc:creator>
				<category><![CDATA[App Store]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://blog.mundue.net/?p=261</guid>
		<description><![CDATA[This post could be subtitled &#8220;No good deed goes unpunished.&#8221; This is a story about how updating existing products can be a painful and frustrating process. Over the last 4 weeks I&#8217;ve updated 4 different apps and can share the common pitfalls encountered in the process. It turns out that some users can never be [...]]]></description>
			<content:encoded><![CDATA[<p>This post could be subtitled <em>&#8220;No good deed goes unpunished.&#8221;</em> This is a story about how updating existing products can be a painful and frustrating process. Over the last 4 weeks I&#8217;ve updated 4 different apps and can share the common pitfalls encountered in the process. It turns out that some users can never be pleased, though the silent majority are just fine with incremental improvements.</p>
<p><span id="more-261"></span><br />
<h3>Background</h3>
<p>The motivation behind most updates is to add features or otherwise enhance an app in order to attract new users or retain existing ones. If you&#8217;re using 3rd-party software such as OpenFeint, ad networks, or game frameworks, you need to frequently update for those as well. Compatibility with the latest iOS version or iDevice du jour is pretty important, too. Here at Mundue HQ we&#8217;ve got a big pile of devices and a testing matrix that would make your eyes glaze over. Deciding whether or not to support older devices is a tough choice all developers must make, and having <a href="http://blog.mundue.net/2009/10/shared-tracking-controller/">analytics</a> in your code can help.</p>
<p>Earlier this summer we added rudimentary support for iOS 4.0 to some of our apps. This was not strictly required, but I think the fast app switching is a big win for the user (improves perceived responsiveness of the device) and the more core Apple functionality you can support, well, the better off you&#8217;ll be. The one thing that was still missing from our reMovem games was the &#8220;hi res&#8221; graphics designed for the Retina Display devices. Initially just the iPhone 4, this now includes the new iPod touch 4th gen., which will be very popular come Christmas, I&#8217;m sure.</p>
<p>On September 2 we finally found out that Game Center would be available with the (then) upcoming iOS 4.1 release. This presented a compelling reason to add it to the updates we were already working on. Until then, Game Center was just promised for &#8220;later this year.&#8221; So we worked out a plan to modify some apps to include Game Center and all of them to include &#8220;hi res&#8221; graphics. We had already been working with the artist to update graphics, so the timing couldn&#8217;t be better.</p>
<h3>Feedback</h3>
<p>Fast-forward 4 weeks and approximately 1,275,000 downloaded updates later, and there are two main areas users complained about. Yes, the &#8220;hi res&#8221; graphics and the Game Center support. For games like ours which are neither serialized nor completion-based, replayability is crucial. It&#8217;s easy to see how users are trained to expect ( <a href="http://www.youtube.com/watch?v=I8jkz0pdHk8">demand</a>, even ) regular updates for some games, but to be honest we don&#8217;t get too many requests for specific features. So how could things go so badly, or did they? That&#8217;s why it&#8217;s so important to keep things in perspective.</p>
<p>Reviews are a good measure of satisfaction, and by adding a time-delayed prompt to rate the app you can ensure decent reviews from happy customers. This is easily accomplished by prompting people who have shown they appreciate the game, preferably when they are in a good mood, like after reaching a level or making a high score. If you look at the ratings alone, then we should be happy with reMovem&#8217;s 4.5 stars and reMovem free&#8217;s 4.2 stars (as of 9/28/2010).  But let&#8217;s look at each of the problem areas in a little more detail.</p>
<h3>Colors</h3>
<p>You would not believe the number of people complaining about a slight change of colors! &#8220;Hurts my eyes,&#8221; &#8220;Ugly Update!,&#8221; &#8220;Can&#8217;t play any more&#8221; are just a few of the comments received. Granted my vision is not that great. But I&#8217;m not colorblind, just very nearsighted. Still, the colors look good, especially when seen on the Retina Display. The original purple color was too blue, so we modified it to be actual purple, but most assumed it was blue. Aside from that we replaced a rarely-used fifth color (pink) with blue, to better match the existing icons.</p>
<p><img style="float: right;" title="RetinaDisplay-vs-old.png" src="http://blog.mundue.net/wp-content/uploads/2010/09/appstoreRetinaDisplay-vs-old.png" border="0" alt="RetinaDisplay-vs-old.png" hspace="10" width="482" height="211" />At first it was only complaints about the colors. Not a single mention of the improved &#8220;hi res&#8221; display. I forgot to mention that with iOS 4.1 Apple fixed the issue with named image resources, so that the @2x images are properly used. You can clearly see the difference in these actual-size screen grabs.</p>
<p>In any case we began to worry that there was actually something wrong with the images. It&#8217;s so easy to overreact to early feedback. I knew it would take a couple of days for the delayed review prompts to kick in. Fortunately that happened, and after an initial wave of complaints about the colors, the true fans started writing good reviews and leaving mostly 4 and 5 start ratings.</p>
<h3>Game Center</h3>
<p>Game Center is interesting, because the ones that complain are so adamant about it. The best is &#8220;﻿Game Centre integration has spoilt this app.&#8221; Come on, really? The Game Center integration is optional with a big giant &#8220;Use Game Center&#8221; switch on the settings page. I know that Game Center is flakey in its initial release, and Apple could&#8217;ve made the sign-in screen less generic, but it&#8217;s not really <em>that</em> bad. Other classic complaints are &#8220;I don&#8217;t want to keep track of scores,&#8221; and &#8220;How do I shut off the login junk?&#8221;</p>
<p>I think the Game Center fuss will die down when players realize that more of their games support it. I reply with a gentle reminder to that effect, and point them to the Apple page which describes its benefits. So far nearly 6,000 players have entered high scores. That&#8217;s only a 3% adoption rate, but we haven&#8217;t tried to compute how many players there are on capable devices.</p>
<h3>Conclusion?</h3>
<p>Is it time to panic? No. When you upgrade any app you will most definitely catch some flak from a vocal minority who dislike <strong><em>any</em><span style="font-weight: normal;"> changes. In time the majority of users will rally with good reviews and ratings. As my friend <a href="http://twitter.com/MarkusN/status/25805281543">Markus</a> said, &#8220;that problem will solve itself by pure mass distribution.&#8221; I couldn&#8217;t agree more. Be patient, wear a thick skin, and remember to prompt the happy users to rate your apps.</span></strong></p>
<p><strong><span style="font-weight: normal;"><span style="font-family: arial, verdana, tahoma, sans-serif; font-size: 13px; line-height: 20px;"><em>﻿﻿This post is part of <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://idevblogaday.com/">iDevBlogADay</a>, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://idevblogaday.com/">web site</a>, <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://feeds.feedburner.com/idevblogaday">RSS feed</a>, or <a style="text-decoration: none; color: #004199; padding: 0px; margin: 0px;" href="http://twitter.com/#search?q=%23idevblogaday">Twitter</a>.</em></span><br /></span></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mundue.net/2010/09/change-is-hard/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

