<?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>tapadoo &#187; iphonedev</title>
	<atom:link href="http://tapadoo.com/category/iphonedev/feed/" rel="self" type="application/rss+xml" />
	<link>http://tapadoo.com</link>
	<description>Incredible Mobile App Development</description>
	<lastBuildDate>Mon, 23 Apr 2012 14:39:01 +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>Regular problem with XML to JSON Converters</title>
		<link>http://tapadoo.com/2011/regular-problem-with-xml-to-json-converters/</link>
		<comments>http://tapadoo.com/2011/regular-problem-with-xml-to-json-converters/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 23:00:35 +0000</pubDate>
		<dc:creator>dermdaly</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphonedev]]></category>

		<guid isPermaLink="false">http://tapadoo.com/?p=532</guid>
		<description><![CDATA[Here at tapadoo, we&#8217;ve done a number of apps which communicate with back end data servers. Typically this means a RESTful API with JSON or XML payloads. There&#8217;s one issue we&#8217;ve come across on a number of projects, where we&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>Here at tapadoo, we&#8217;ve done a number of apps which communicate with back end data servers.  Typically this means a RESTful API with JSON or XML payloads.<br />
There&#8217;s one issue we&#8217;ve come across on a number of projects, where we&#8217;re dealing with an existing Web API which is presenting the payloads in JSON.<br />
The problem is where arrays are incorrectly serialized in certain cases.  Specifically we&#8217;ve seen:</p>
<ul>
<li>When an array has more than 1 entry, it is serialized correctly</li>
<li>When the array has only 1 entry, it is serialized not as an array, but as a single dictionary.</li>
</ul>
<p><strong>Firstly, lets explain why this has occurred</strong><br />
If you consider the following XML:</p>
<pre>
&lt;team&gt;
    &lt;employee&gt;
      &lt;name&gt;Joe&lt;/name&gt;
      &lt;surname&gt;Bloggs&lt;/surname&gt;
  &lt;/employee&gt;
  &lt;employee&gt;
    &lt;name&gt;Jane&lt;/name&gt;
    &lt;surname&gt;Doe&lt;/surname&gt;
  &lt;/employee&gt;
&lt;/team&gt;
</pre>
<p>A typical XML to JSON converter will convert this as follows:</p>
<pre>
{
  team:{
    employee:[
      {
        name:'Joe',
        surname:'Bloggs'
      },
      {
        name:'Jane',
        surname:'Doe'
      }
    ]
  }
}
</pre>
<p>I.e It is converted to a Dictionary, with a key called &#8216;team&#8217; whose value is a Dictionary, with a key called &#8216;employee&#8217; which is an array of Dictionaries (with keys of &#8216;name&#8217; and &#8216;surname&#8217;).</p>
<p>Great.<br />
However if the XML was a team with a single entry:</p>
<pre>
&lt;team&gt;
    &lt;employee&gt;
      &lt;name&gt;Joe&lt;/name&gt;
      &lt;surname&gt;Bloggs&lt;/surname&gt;
  &lt;/employee&gt;
&lt;/team&gt;
</pre>
<p>The XML to JSON converter has no context on Employee.  It has now way of knowing that this is potentially a repeating group (especially if it has no XSD to consult), so it converts the XML to the following JSON:</p>
<pre>
{
  team:{
    employee:{
      name:'Joe',
      surname:'Bloggs'
    }
  }
}
</pre>
<p>So, this is now a Dictionary, with a key called &#8216;team&#8217; whose value is a dictionary with a key called &#8216;employee&#8217; whose value is  a Dictionary.</p>
<p>The problem here is when we go to parse, we expect the value of &#8216;employee&#8217; to be an array (which it isn&#8217;t), and this can lead to problems in the code.  </p>
<p>And..due to Objective-C loose approach to type, the following code will run:<br />
<code><br />
NSArray *array = [teamDict objectForKey:@"employee"];<br />
</code></p>
<p>In those cases where there team has a number of employees, the above code works fine, and the pointer, array stores an array.  In those cases where a team as a single employee, the above code runs, however the pointer, array will actually point to a NSDictionary.  So the following code (for example)<br />
<code><br />
int numEntries = [array count];<br />
</code><br />
Will sometimes work, and sometimes lead to a runtime error, which on iPhone will manifest itself as a crash.</p>
<p><strong>So how do we fix this?</strong><br />
Well, if you have control over the server side, the simple question is to fix it in the first place.  Note: This is a common problem with JAXB, a popular java XML binding mechanism often used in REST services written in Java.  We&#8217;ve come across some examples on how to work around it <a href="http://forums.netbeans.org/post-68036.html">here</a> and <a href="http://jersey.576304.n2.nabble.com/Single-Element-Arrays-and-JSON-td5532105.html">here</a>.</p>
<p>If you have no control over this, you may be able to handle this in your Objective-C code.  Here&#8217;s some sample code we&#8217;ve started to use; It checks the data type at runtime, and if necessary, converts it to a single element array</p>
<pre>
+(NSArray *) getArrayFromJSONDictionary:(NSDictionary *)parent
               forKey:(NSString *)key {
  id obj = [parent objectForKey:key];
  if([obj isKindOfClass:[NSArray class]]) {
    return obj;
  }
  if([obj isEqual:[NSNull null]]) {
    NSLog(@"Warning: object for key %@ is null", key);
    // Return an empty array
    return [[[NSArray alloc] init] autorelease];
  }
  NSLog(@"Warning object for key %@ is of type %@",
        key, [[obj class] description]);
  NSArray *ret = [NSArray arrayWithObject:obj];
  return ret;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://tapadoo.com/2011/regular-problem-with-xml-to-json-converters/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>On cross platform toolkits</title>
		<link>http://tapadoo.com/2011/on-cross-platform-toolkits/</link>
		<comments>http://tapadoo.com/2011/on-cross-platform-toolkits/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 00:39:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphonedev]]></category>

		<guid isPermaLink="false">http://tapadoo.com/?p=522</guid>
		<description><![CDATA[With the recent Nokia-Microsoft announcement, the smartphone race just got a shot in the arm. There will now be 3 main players in the smartphone and apps market. They are of course: iOS Running on iPhone, iPod Touch, iPad and [...]]]></description>
			<content:encoded><![CDATA[<p>With the recent <a href="http://www.microsoft.com/presspass/press/2011/feb11/02-11partnership.mspx">Nokia-Microsoft announcement</a>, the smartphone race just got a shot in the arm.  There will now be 3 main players in the smartphone and apps market.  They are of course:</p>
<ol>
<li>iOS Running on iPhone, iPod Touch, iPad and most likely AppleTV</li>
<li>Android, running on handsets from Samsung, HTC, Sony Ericsson, Motorola (and many others), and a plethora of Tablets</li>
<li>Windows Phone 7 &#8211; Running on handsets from Nokia, Samsung, LG, Dell and many others</li>
</ol>
<p>If you&#8217;re a brand manager, and you are considering a mobile strategy, you probably want to ensure that your mobile strategy has the widest reach possible, so will probably want your apps on all of the above.  This is possible, but costly.</p>
<p>Allow me to get technical for a moment.  iOS is developed in Objective-C, using a Mac, with Tools supplied by Apple.  Android is based on a Java Eco System, and Windows Phone 7 is based on a .NET ecosystem.</p>
<p>This may be gobbedlygook to you, but what this means is they are very different, and very little crossover occurs.  An app written for iPhone essentially needs to be re-written (at similar levels of effort an cost) for Android, and again for Windows Phone 7.</p>
<p>And at this point we usually get asked a fairly obvious and sensible question</p>
<blockquote><p>Isn&#8217;t there some sort of tool that can publish on multiple platforms?</p></blockquote>
<p>Here&#8217;s the definitive answer to this:</p>
<blockquote><p>NO.  There isn&#8217;t</p></blockquote>
<p>But, this needs elaboration.  There are plenty of toolkits out there that claim to offer this.  Be careful.  If you want to use these you can but the results always end up the same.</p>
<p>I&#8217;m cynical about these toolkits for very good reason.  This is pretty much the third time around for this kind of thing for me.  In the early 90&#8242;s there were a slew of toolkits that offered compatibility across X/Windows, Microsoft Windows and Mac OS.  In the early 2000s the Eclipse people gave us <em>SWT</em> the &#8220;Standard Widget Toolkit&#8221;, and in fact, there a few others such as QT or wxWindows I can name.</p>
<p>The one thing that always stood out when they were used was</p>
<blockquote><p>You could spot them a mile off</p></blockquote>
<p>Applications written using SWT looked like an SWT application, not a Windows application when running on Windows, and a Mac Application when running on Mac.</p>
<p>These cross platform toolkits always ignored one thing</p>
<blockquote><p>When you attempt to provide something that runs on many platforms, the <strong>best you can hope for</strong> is <strong>&#8220;least common denominator&#8221;</strong></p></blockquote>
<p>So the end result?  Consistency &#8211; Yes.  But consistently bad.<br />
Applications written using cross platform toolkits work consistently bad on all platforms.  So you end up with a rubbish application on Windows, rubbish application on X/Windows and, you guessed it, a rubbish application on Mac (or.. a rubbish application on iOS, Android and WP7)</p>
<p>I think this can only get worse on Mobile.  The devices are so specific, with a broad range of capabilities.  Trying to cross them is just folly.  In addition to this, the &#8220;good taste&#8221; barrier has leapt upwards since the introduction of the iPhone.  Imagine giving an &#8220;android 2.0&#8243; experience in an iPhone app, or attempting the &#8220;iPhone experience&#8221; on Android &#8211; Neither user will thank you.</p>
<p>And let me get back to the Brands.  If you&#8217;re a brand manager, your job is to enhance the brand.  If you put out something which gives a poor experience on any mobile device you&#8217;ve done worse than not releasing &#8211; you&#8217;ve in fact tarnished the brand.  Now if you do that across many mobile platforms, the damage will be multiplied.</p>
<p>So do yourself a favour; If you want quality, and a native experience for your end users there&#8217;s only one way to go.  Get it developed natively, and avoid the short term savings a cross platform toolkit claims to get you.</p>
<hr />
<p>You&#8217;re reading the tapadoo blog.  Did you know that as well as publishing our own applications, we offer iPhone development services and consultancy?  If you have an idea, project or something you think we can help you with, please get in touch through <a href="http://www.tapadoo.com/contact/">our contact page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tapadoo.com/2011/on-cross-platform-toolkits/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Tired of trying to create nice buttons for your iPhone app?  Try this.</title>
		<link>http://tapadoo.com/2010/tired-of-trying-to-create-nice-buttons-for-your-iphone-app-try-this/</link>
		<comments>http://tapadoo.com/2010/tired-of-trying-to-create-nice-buttons-for-your-iphone-app-try-this/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 17:29:19 +0000</pubDate>
		<dc:creator>dermdaly</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphonedev]]></category>

		<guid isPermaLink="false">http://tapadoo.com/?p=419</guid>
		<description><![CDATA[Flat iPhone buttons as offered in Interface builder suck. They don&#8217;t look nice. There&#8217;s the option of using Three20 to get good looking buttons. Its an option, but frankly, it feels a bit like using a sledgehammer to crack a [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Flat iPhone buttons as offered in Interface builder suck</strong>.  They don&#8217;t look nice.</p>
<p>There&#8217;s the option of using Three20 to get good looking buttons.  Its an option, but frankly, it feels a bit like using a sledgehammer to crack a nut.  You end up with a large addition to your code, just for nice buttons.  OK, you could go to the trouble of stripping out what you don&#8217;t need, but that again is more work.</p>
<p>All iPhone developers know about UIGlassButton &#8211; Its an undocumented API for making nice looking buttons, that exists only on the simulator and not on the iPhone itself.  Why couldn&#8217;t we just have that for iPhone OS?  I dunno, but its not there.</p>
<p>At some point in the past, I came across a nice snippet of code that used undocumented techniques for creating a glass button, and then saving the image to disk.  This could then be used as a background to a &#8220;custom button&#8221;, producing the nice glass buttons I&#8217;ve been looking for. I think it was <a href="http://twitter.com/schwa">schwa</a> on twitter; Nice.  Full credit where it&#8217;s due.</p>
<p>So, building upon this, I&#8217;ve thrown together a simple single-screen app for creating the images for glass buttons using that technique.  Basically, it allows you set the RGB values, and the size.  Hitting &#8220;Save&#8221; writes the pngs to the application&#8217;s documents directory.<br />
Now, you&#8217;ll have two png files, which you can use as images in custom buttons.  Hey presto.  Very simple UIGlassButtons.<br />
Here&#8217;s a screen shot:</p>
<div id="attachment_422" class="wp-caption aligncenter" style="width: 424px"><img class="size-full wp-image-422" title="Screen shot 2010-04-29 at 18.31.32" src="http://tapadoo.com/wp-content/uploads/2010/04/Screen-shot-2010-04-29-at-18.31.32.png" alt="Our very simple button maker" width="300" height="563" /><p class="wp-caption-text">Our very simple button maker</p></div>
<p>Full source is <a href="http://github.com/dermdaly/ButtonMaker">available on github</a>.  Comments welcome.</p>
<hr/>
<p>You&#8217;re reading the tapadoo blog.  Did you know that as well as publishing our own applications, we offer iPhone development services and consultancy?  If you have an idea, project or something you think we can help you with, please get in touch through <a href="http://www.tapadoo.com/contact/">our contact page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tapadoo.com/2010/tired-of-trying-to-create-nice-buttons-for-your-iphone-app-try-this/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Project Firepit</title>
		<link>http://tapadoo.com/2010/project-firepit/</link>
		<comments>http://tapadoo.com/2010/project-firepit/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 12:35:10 +0000</pubDate>
		<dc:creator>dermdaly</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphonedev]]></category>

		<guid isPermaLink="false">http://tapadoo.com/?p=412</guid>
		<description><![CDATA[We&#8217;ve had our heads down for a couple of months. This is because we&#8217;ve been working on a project we&#8217;re very excited about. Now that our initial release is out the door, we&#8217;re happy to give out some information about [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve had our heads down for a couple of months.  This is because we&#8217;ve been working on a project we&#8217;re very excited about.  Now that our initial release is out the door, we&#8217;re happy to give out some information about it.</p>
<p>That project is <strong>Firepit</strong>.<br />
<img src="http://tapadoo.com/wp-content/uploads/2010/04/fp-logo-white.png" alt="fp-logo-white" title="fp-logo-white" width="400" height="169" class="aligncenter size-full wp-image-413" /><br />
<strong>What is Firepit</strong>?<br />
Firepit is </p>
<ol>
<li>A web based framework</li>
<li>For bands going on tour&#8230;</li>
<li>..which allows them to produce iPhone applications..</li>
<li>..that are &#8220;virtual tour programmes&#8221;</li>
</ol>
<p>We just got out the first Firepit release today: The App is &#8220;<a href="http://usefirepit.com/ultravox">Ultravox &#8211; Return to Eden II</a>&#8220;, and it is on release on the app store worldwide.</p>
<p>We&#8217;re delighted that Ultravox are on board.  They&#8217;ve been an avid supporter of the project for some weeks, getting behind the idea, and supplying some great exclusive content.  A quick look over <a href="http://twitter.com/midgeure1">Midge Ure&#8217;s Twitter stream</a> shows he&#8217;s being doing some beta testing, and bigging up the app.</p>
<p>Hope y&#8217;all like it.</p>
]]></content:encoded>
			<wfw:commentRss>http://tapadoo.com/2010/project-firepit/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The iPhone killer is on the way</title>
		<link>http://tapadoo.com/2010/the-iphone-killer-is-on-the-way/</link>
		<comments>http://tapadoo.com/2010/the-iphone-killer-is-on-the-way/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 17:31:49 +0000</pubDate>
		<dc:creator>dermdaly</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphonedev]]></category>

		<guid isPermaLink="false">http://tapadoo.com/2010/the-iphone-killer-is-on-the-way/</guid>
		<description><![CDATA[The new windows 7 phone is upon us. Finally there&#8217;s an &#8220;iPhone killer&#8221;!!! Ehhhhh. No. There will be an iPhone killer. But it&#8217;s not going be today tomorrow. The iPhone is just far too advanced of any competition. Why? Apple [...]]]></description>
			<content:encoded><![CDATA[<p>The new windows 7 phone is upon us. Finally there&#8217;s an &#8220;iPhone killer&#8221;!!!</p>
<p>Ehhhhh.   No.</p>
<p>There will be an iPhone killer. But it&#8217;s not going be today tomorrow. The iPhone is just far too advanced of any competition. </p>
<p>Why? Apple have one thing <em>in spades</em> that no other computer or handset manufacturer has: <strong>Taste.</strong></p>
<p>This seems to be lost on most non-iPhone owners. The arguments for the competition are usually about specifications. That&#8217;s just silly. Most people don&#8217;t know <em>megabytes</em> from <em>kilohertz</em> so don&#8217;t give a monkeys about specifications.<br />
I&#8217;ve often listened to arguments about x device having a faster processor, or doing background processing. But these people never ever do what almost every new iPhone owner does : tell me how much they love their phones.<br />
<strong>Try it</strong>: borrow a buddies iPhone and play with it. 2 things will happen : you&#8217;ll say &#8220;yeah&#8230;it is lovely&#8221; and your buddy will start to twitch; we don&#8217;t like letting our iPhones out of our reach for too long.<br />
You don&#8217;t get that reaction from a new Sony Ericsson, Nokia, Samsung or Android for that matter.  In fact the most common utterance I hear from nokia owners are </p>
<blockquote><p>&#8220;look I just want to make calls and send texts&#8221;</p></blockquote>
<p> not</p>
<blockquote><p>&#8220;I love this phone&#8221;</p></blockquote>
<p>Every time I try out a new other vendors phone I usually finding myself not liking it. sometimes the annoyances are subtle like just <em>slighlty</em> too slow to respond or jerky scrolling. That just tells me that someone in the company, high up, with the final say said </p>
<blockquote><p><strong>&#8220;it&#8217;s good enough.&#8221;</strong></p></blockquote>
<p>That&#8217;s understandable; getting the last 5% so that something goes from &#8220;good enough&#8221; to &#8220;perfect&#8221; may well take ages or cost the earth.<br />
But thankfully, Apple don&#8217;t do &#8220;good enough&#8221;. They take the &#8220;it&#8217;s gotta be perfect&#8221; approach as a matter of course. And for that&#8230;we have the iPhone</p>
<p>So when&#8217;s that iPhone killer coming?<br />
Consider this: for a few years, every new mp3 player was being dubbed an <em>&#8220;iPod killer&#8221;</em>. It hasn&#8217;t happened yet and nobody even writes about iPod killers anymore. </p>
<p>So far the only iPhone killers have been, well&#8230;newer iPhones. </p>
<p>It won&#8217;t last forever; it never does. Walkmans were toppled; iPhones will be, but it will take new technology that I can&#8217;t imagine right now. iPhone could easily dominate for a decade&#8230;&#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://tapadoo.com/2010/the-iphone-killer-is-on-the-way/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>A message about Ireland&#8217;s Phone Book</title>
		<link>http://tapadoo.com/2009/a-message-about-irelands-phone-book/</link>
		<comments>http://tapadoo.com/2009/a-message-about-irelands-phone-book/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 15:23:59 +0000</pubDate>
		<dc:creator>dermdaly</dc:creator>
				<category><![CDATA[iePhoneBook]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphonedev]]></category>
		<category><![CDATA[IrishApps]]></category>

		<guid isPermaLink="false">http://tapadoo.com/?p=343</guid>
		<description><![CDATA[It has come to our attention that current versions of &#8220;Ireland&#8217;s Phone Book&#8221; and &#8220;Ireland&#8217;s Phone Book Pro&#8221; are currently not operable. We regret to inform users that in light of a recent threat of legal challenge, we WILL NOT [...]]]></description>
			<content:encoded><![CDATA[<p>It has come to our attention that current versions of &#8220;Ireland&#8217;s Phone Book&#8221; and &#8220;Ireland&#8217;s Phone Book Pro&#8221; are currently not operable.  We regret to inform users that in light of a recent threat of legal challenge, we WILL NOT be providing a fix to the application in its current guise.  We have also taken the decision to  remove &#8220;Ireland&#8217;s Phone Book&#8221; and &#8220;Ireland&#8217;s Phone Book Pro&#8221; from the App store.</p>
<p>We are engaging with a number of potential partners with a view to a long term solution and hope to be able to announce something shortly.</p>
<p>Apologies for the inconvenience caused.</p>
]]></content:encoded>
			<wfw:commentRss>http://tapadoo.com/2009/a-message-about-irelands-phone-book/feed/</wfw:commentRss>
		<slash:comments>97</slash:comments>
		</item>
		<item>
		<title>Two tools if you&#8217;re developing iPhone apps for clients</title>
		<link>http://tapadoo.com/2009/two-tools-if-youre-developing-iphone-apps-for-clients/</link>
		<comments>http://tapadoo.com/2009/two-tools-if-youre-developing-iphone-apps-for-clients/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 13:14:03 +0000</pubDate>
		<dc:creator>dermdaly</dc:creator>
				<category><![CDATA[iphonedev]]></category>

		<guid isPermaLink="false">http://tapadoo.com/?p=286</guid>
		<description><![CDATA[I&#8217;m gonna speak about two tools that I recommend if you are planning on developing apps, particularly for clients. These are just as important for any sort of iPhone app development, but they are very useful for interacting and collaborating [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m gonna speak about two tools that I recommend if you are planning on developing apps, particularly for clients.  These are just as important for any sort of iPhone app development, but they are very useful for interacting and collaborating with customers.</p>
<h2>Balsamiq</h2>
<p><a href="http://www.balsamiq.com/products/mockups">Balsamiq mockups</a> from Balsamiq Studios plain and simple rocks. What is it?  It is a very rapid prototyping tools for UI and User Experiences.<br />
They&#8217;ve added specific iPhone stencils into the product so you can create mockups really, really quickly.<br />
Why do I like it?  Lots of reasons:</p>
<ol>
<li>
Its runs everywhere.  Its an Adobe Air application, which though is not native to Mac, it runs nicely on the desktop.  But, they&#8217;ve also got an edition that runs in a web page, so you can deploy it on your wiki, or any other collaborative web server you may use.  They&#8217;ve even got a hosted edition which you can play with for free (go <a href="http://www.balsamiq.com/demos/mockups/Mockups.html">here</a>, have a play)</li>
<li>Doing up stuff is <em>fast</em>.  It is genuinely as quick as using a pen and paper. Just last week I was working on a proposal; the client had given me his ideas, and I already formed my opinion on how it would look.  I mailed him back my response as a bulleted point list (It was a small project!).  He wasn&#8217;t convinced.  So&#8230;I spent a bit longer, and did up a couple of pages of a proposal.  I used mockups to illustrate my ideas.  Without spending too much time, I had gone from a boring e-mail response, to a professional, well thought out one, which immediately struck a chord with the client.</li>
<li>It is focused on function rather than detail.  I really like this.  It produces mockups that look like they are hand drawn.  It avoids details like colour, animation etc.  This means when working with the client we can focus on what the app does ( not &#8220;Shouldn&#8217;t that button be bluer?&#8221;).  We get across high level ideas, get them across well, and by being low on a lot of details, it means we can get more feedback with the client.  I love the phrase Balsamiq use themselves:<br />
<blockquote><p>
A low fidelity look which encourages hones feedback.  We call it &#8220;<em>a look no-one is afraid to criticize</em>&#8221;
</p></blockquote>
</li>
<li>They have an agile approach to their product; They update their application on a regular basis, based on feedback taken through GetSatisfaction
</li>
<p>Enough of my rambling; Here&#8217;s a mockup.</p>
<p><img src="http://tapadoo.com/wp-content/uploads/2009/10/mockup.png" alt="mockup.png" border="0" width="533" height="510" /></p>
<h2>iPhone Application Sketch Book</h2>
<p>Next is&#8230;an actual sketch book.  Its available on amazon, but you can find details about it on <a href="http://www.mobilesketchbook.com">www.mobilesketchbook.com</a>. I think this is a great one for grabbing ideas, or scribbling down initial design thoughts.<br />
I like this because it is a low-tech answer; Each page is lined graph paper, with a full-size image of on iPhone on it.  The screen area is blank, so you can draw on it to capture your app ideas.<br />
<img src="http://tapadoo.com/wp-content/uploads/2009/10/l-800-606-c2b55ee2-926d-4b31-90a3-ff27796e91c3.jpeg" alt="Mobile sketch book" title="Mobile sketch book" width="640" height="485" class="alignnone size-full wp-image-293" /><br />
You can have this in your laptop bag, and use it when an idea comes to you.  (when travelling, for example).</p>
<p>Having this along at a client meeting is great.  It shows the client that you are doing this often, and you are serious about capturing the ideas</p>
<p>I know there&#8217;s others out there, based around Powerpoint or Keynote, but frankly, these two are my favourites right now.</p>
<p>If you&#8217;ve other tips, please leave a comment with your favourite tools for iPhone design and development.</p>
<hr/>
<p>You&#8217;re reading the tapadoo blog.  Did you know that as well as publishing our own applications, we offer iPhone development services and consultancy?  If you have an idea, project or something you think we can help you with, please get in touch through <a href="http://www.tapadoo.com/contact/">our contact page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tapadoo.com/2009/two-tools-if-youre-developing-iphone-apps-for-clients/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A simple credits screen with Core Animation</title>
		<link>http://tapadoo.com/2009/a-simple-credits-screen-with-core-animation/</link>
		<comments>http://tapadoo.com/2009/a-simple-credits-screen-with-core-animation/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 19:10:16 +0000</pubDate>
		<dc:creator>dermdaly</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphonedev]]></category>

		<guid isPermaLink="false">http://www.tapadoo.com/?p=243</guid>
		<description><![CDATA[Whilst working on my latest iPhone project (not yet announced), I wanted to do up a useful credits screen. This project had more than just myself involved and I wanted to ensure everyone got a mention. I was also conscious [...]]]></description>
			<content:encoded><![CDATA[<p>Whilst working on my latest iPhone project (not yet announced), I wanted to do up a useful credits screen.  This project had more than just myself involved and I wanted to ensure everyone got a mention.</p>
<p>I was also conscious of the exposure my apps were getting through <a href="http://apps.ie">apps.ie</a>, so wanted to do something that would link back too. So..I&#8217;ve put together a simple credits screen which uses Core Animation to show the individual credits.  This post explains the code, and how it works.  There&#8217;s a gotcha or two in there as well.</p>
<p><strong>How does it look?</strong><br />
Before I start, here&#8217;s a quick preview.</p>
<div align="center">
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/V65UKJX5css&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x3a3a3a&#038;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/V65UKJX5css&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x3a3a3a&#038;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
</div>
<p><br/><br />
<strong>Data Structure</strong><br />
For the purposes of a credit, I wanted to be able to store</p>
<ul>
<li>The person&#8217;s name</li>
<li>What they did</li>
<li>Their twitter id</li>
<li>The web site</li>
<li>An avatar</li>
</ul>
<p>That&#8217;s easy &#8211; I wrote a class called AppCredit, which is a pure data structure.  It doesn&#8217;t do anything beyond store the above details.</p>
<p><strong>The View On The Data</strong><br />
So, how would I visualise the data structure ? I had an idea of how this should look, so I created a CreditsView (in fact a view controller XIB), which layed out the information in a way that I thought looked nice:</p>
<div align="center">
<img class="alignnone size-full wp-image-244" title="asinglecredit" src="http://www.tapadoo.com/wp-content/uploads/2009/10/asinglecredit.png" alt="asinglecredit" width="322" height="112" />
</div>
<p><br/><br />
I wanted the twitter name and the web address to be tappable, to take you away to the relevant website.  To achieve this, I overlayed the labels with custom buttons (essentially invisible buttons).  I wired up their touchDown (so we can highlight), and their touchUpInside so we can actually open the relevant URL.  We also followed good UI principals, in that we have an alert box pop up to warn that the user is about to leave the application.  All of this is handled in the class CreditsView, along with the relevant nib file CreditView.xib</p>
<p><strong>So where&#8217;s the animation?</strong><br />
Well, I wanted that the entire view just described would fade in and out repeatedly, for each of the credits, so I wanted them showing as part of a larger container.  This is the CreditsViewController.<br />
The CreditsViewController is the UIViewController for the overall credits page.  It consists of</p>
<ol>
<li>A large label to show your application name</li>
<li>An area for the animated credits</li>
<li>A scroll area to store a brief description of your application</li>
<li>A &#8220;bottom third&#8221; with a description of apps.ie, along with another &#8220;invisible button&#8221; to take you there</li>
</ol>
<p>In addition, in the sample code, I added a toolbar, with a &#8220;Done&#8221; button to be able to dismiss the credits screen.  For the purposes of this example, I worked of XCode&#8217;s standard &#8220;Utility application&#8221; template, and replaced the flipside view with my CreditsViewController.  This meant adding some way to dismiss the credits view (In my actual app, it shows on a separate tab, so does not need a dismiss capability).  The Done button is wired up the sample as the XCode sample, and should be obvious.</p>
<p><strong>Supplying the data for the credits view</strong><br />
I adopted a delegate approach to this.  So theres a CreditsViewDelegate protocol, which we assign to the CreditsViewController.  Once you implement this, and assign it to your CreditsViewController.delegate, it will ask the delegate for the necessary data as it needs it.</p>
<p><strong>The actual animation</strong><br />
The actual animation is quite simple.  In a nutshell, it animates the first credit, when this is complete it animates the next one&#8230;and so on.  When all have been animated, it just starts again.  Here&#8217;s the detail</p>
<ol>
<li>When the CreditsViewController is loaded, it also loads up a CreditsView from the nib file</li>
<li>As it 	is about to appear, it asks its delegate for the necessary data, and fills in the labels</li>
<li>Once it has appeared, it starts to animate the CreditsView.  It does this using the following code</li>
</ol>
<pre>
-(void) animateNextCredit
{
  // Use animation to fade it in
  CABasicAnimation *animation =
      [CABasicAnimation animationWithKeyPath:@"opacity"];
  animation.fromValue = [NSNumber numberWithFloat:0];
  animation.toValue = [NSNumber numberWithFloat:1];
  animation.repeatCount = 0;
  animation.duration = 2;
  animation.autoreverses = YES;
  animation.delegate = self;
  // Ok...Start showing our credits
  [self getCredits];
  if(credits != nil) {
    AppCredit *credit = [credits objectAtIndex:currentCredit];
    [creditsView setAppCredit:credit];
    [self.view addSubview:creditsView.view];
  }
  currentCredit++;
  if(currentCredit == [credits count]) {
    currentCredit = 0;
  }
  [creditsView.view.layer
       addAnimation:animation forKey:@"credits"];
}
</pre>
<p>Basically all that is happening here is we are telling the CreditsView (i.e. the small pane) to vary its opacity from 0 to 1 and back again, over 2 seconds.  We set up self as the delegate to the animation, which means a method called animationDidStart will get called when we start, and animationDidStop when the animation completes.  So..when animationDidStop gets called, we know we can move on to the next animation:</p>
<pre>
- (void)animationDidStop:(CAAnimation *)theAnimation
       finished:(BOOL)flag
{
  creditsView.view.layer.opacity = 0;
  if(flag) {
    // This means that animation ran to completion.
    //  I.e. Was not interrupted
    // e.g. by removeAllAnimations
    // Cool - time to start another
    [self animateNextCredit];
  }
}
</pre>
<p><strong>Gotchas</strong><br />
There were a few problems I encountered when writing this code.  Firstly, when the animation completed, there was an annoying flicker just before the second one started.  This was caused because I had set the opacity to 1 in the CreditsView &#8211; Once the animation completed, the CreditsView was refreshed briefly back to full opacity.  The fix was to set the opacity to 0.  Once complete (i.e. faded out), if it were shown, it would be shown with full opacity, and therefore invisible.<br />
However, this led to a second problem.  With the opacity set to 0, the CreditsView was essentially hidden, and so did not respond to taps. I couldn&#8217;t jump off to my twitter url, etc.  I could see my view (because it was being animated from 0 to 1, but I could not interact with it).</p>
<p>This is caused by the fact that the actual state of the view and the displaying of it are independent; I could see it animating, but its opacity value was actually 0.  When its opacity is 0 it is considered hidden, and therefore won&#8217;t respond to user input.<br />
To get around this, I experimented with very low values of opacity which would still respond to input, and found this to be around 0.02.  So putting both of the above together: In animationDidStart, I set the opacity to 0.02.  In animationDidEnd, I set the opacity to 0 (to avoid flicker).  This all seems to work well.<br />
The next issue I found was another part of my app was slow after I ran my credits screen.  I guessed that the animations were never cancelled.  This was easy to fix, In my viewWillDisappear method, I just had to cancel my animations:</p>
<pre>
[creditsView.view.layer removeAllAnimations];
</pre>
<p>Note however that this will result in your animationDidStop method being called (which was where we started the next one, right?).  But we can tell if we completed or were interrupted by the second parameter sent to animationDidStop, so this was easy to ensure we didn&#8217;t re-start.  That&#8217;s what the if(flag) bit above is all about.</p>
<p><strong>Improvements</strong><br />
So how could I improve the code?  There&#8217;s a couple of obvious points:</p>
<ol>
<li>In the credits view, I could extend UILabels and make them respond to input.  This would negate the need for invisible UIButtons.  Thanks to <a href="http://www.steventroughtonsmith.com/">@stroughtonsmith</a> for that one. (Oh and for helping me with other gotchas).</li>
<li>I&#8217;ve done no internationalisation.  Again, should be straightforward</li>
</ol>
<p>So that&#8217;s it.  You can <a href="http://files.me.com/dermdaly/6ndw0p">get the code</a> It looks better than the video on the simulator, and better still on the iPhone or iPod touch.</p>
<p>The code also uses a technique for doing a gradient background, as <a href="http://cocoawithlove.com/2009/08/adding-shadow-effects-to-uitableview.html">outlined by Matt Gallagher</a> in his excellent &#8220;Cocoa With Love&#8221; blog.  There&#8217;s two source files from that blog post in the code, unchanged.</p>
<p>If you&#8217;re an Irish Developer, you may consider using this as a basis for your upcoming projects, so it will link back to <a href="http://apps.ie">apps.ie</a>.  If you&#8217;ve come from elsewhere, welcome!</p>
<p>Feel free to use this code as you wish.  If you&#8217;ve any comments, questions, or improvements, I&#8217;m happy to hear about them.  Use the comment section below to leave feedback.</p>
<hr/>
<p>You&#8217;re reading the tapadoo blog.  Did you know that as well as publishing our own applications, we offer iPhone development services and consultancy?  If you have an idea, project or something you think we can help you with, please get in touch through <a href="http://www.tapadoo.com/contact/">our contact page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tapadoo.com/2009/a-simple-credits-screen-with-core-animation/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The problem with &#8220;revenue share&#8221;</title>
		<link>http://tapadoo.com/2009/the-problem-with-revenue-share/</link>
		<comments>http://tapadoo.com/2009/the-problem-with-revenue-share/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 18:06:00 +0000</pubDate>
		<dc:creator>dermdaly</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphonedev]]></category>

		<guid isPermaLink="false">http://www.tapadoo.com/?p=194</guid>
		<description><![CDATA[As an iPhone developer for hire, I get regular approaches from people with ideas that they would like to turn into realities. I sign non-disclosure agreements and then get brought into their confidence to explain their idea. Some turn out [...]]]></description>
			<content:encoded><![CDATA[<p>As an iPhone developer for hire, I get regular approaches from people with ideas that they would like to turn into realities.  I sign non-disclosure agreements and then get brought into their confidence to explain their idea.</p>
<p>Some turn out to be better than others.  Those with a broad appeal may become successes; those with a niche appeal will most likely not make much money; they possibly won&#8217;t turn a profit, but one man&#8217;s great idea, doesn&#8217;t appeal to another so generally I try to not make an early judgement call.</p>
<p>At some point in the conversation we get around to ballpark figures.  This is usually when I explain why we will need to go into more detail.  In fact, I typically cite <a href="http://www.tapadoo.com/2009/how-much-to-develop-an-iphone-application/">my own blog post about pricing</a>.  The potential client usually sees the benefit in what I am suggesting, but 9 times out of 10, they will still want ballpark pricing.  I understand this.  They really want to know if I think their projects is a €500 project, a €10,000 project or a €250,000 project; They are basically asking for scale and if their budget will work.</p>
<p>In many cases, the potential client starts to talk about doing the project on a revenue share.  The logic goes like this:</p>
<ol>
<li>They&#8217;ve put time into developing their idea; its a good one, and it is going to sell like <a href="http://www.stickytoffeepudding.co.uk/index.asp">hot cakes</a></li>
<li>All that needs to be done is to knock the code together, get it on the app store, and await for the money to start rolling in</li>
</ol>
<p><div id="attachment_199" class="wp-caption alignnone" style="width: 250px"><img src="http://www.tapadoo.com/wp-content/uploads/2009/08/3366720659_b746789dfd_m.jpg" alt="Moneymoneymoney" title="3366720659_b746789dfd_m" width="240" height="160" class="size-full wp-image-199" /><p class="wp-caption-text">Picture Credit: Flickr User amagill</p></div><br />
There&#8217;s a big problem with this approach.  It ignores one large part of the problem.</p>
<blockquote><p><strong>Risk</strong></p></blockquote>
<p>If we work together on <em>your idea</em>, I&#8217;ve to put a great deal of effort into the software development.  Software development is complex, detailed and a good programmer has very real talent, which has taken many years to hone. (I&#8217;ve never met a great programmer who wasn&#8217;t already at it from around 12 years old).  Experienced programmers know that the <a href="http://www.contrast.ie/blog/there-are-no-small-changes/">devil is in the detail</a></p>
<p>So lets look at the proposition from another perspective.  When did your idea come to you?  While lying awake trying to go asleep? Perhaps you sat at home, with a pen and paper over many nights, scribbling ideas, honing them, refining them&#8230;<br />
or </p>
<blockquote><p>perhaps it came to you while you were sitting at your desk in work&#8230;getting paid.</p></blockquote>
<p>And when am I going to do the work?  Well, during my working day..when other customer&#8217;s should be paying me, so aren&#8217;t, because I am working on your idea, but that&#8217;s ok, because its gonna sell like&#8230;.well..I&#8217;ve already explained that.</p>
<p>So..Imagine all goes well&#8230;and the sales do well&#8230;From day 1 we&#8217;re splitting the spoils, and this has really paid off.  The customer who was going to pay me has gone to a competitor, but hey&#8230;I&#8217;m doing ok out of &#8220;very cool idea 1.0&#8243;.  Version 2.0 will probably make even more anyway.</p>
<p>Or</p>
<p>It hasn&#8217;t sold well&#8230;I&#8217;m behind on my mortgage&#8230;The customer who was going to pay me has gone to a competitor..and he&#8217;s not coming back.</p>
<p>How are things with you?&#8230;..Oh&#8230;this was actually just a side project&#8230;so all is well; you&#8217;re still in your day job.  Hey&#8230;nothing ventured, nothing gained right?</p>
<p>Ehhh&#8230;..</p>
<p>A good idea is valuable.  If there&#8217;s real evidence of work being done to develop or prove the idea, that mitigates the risk.  If you&#8217;ve crunched the numbers, even better.  (If its that good, you&#8217;d be crazy to be giving chunks of the revenue away).</p>
<p>Tell you what.   I&#8217;ve another model.  Lets use some hypothethical figures.  We&#8217;ve knocked around your idea.  Its going to cost €10k to develop, and you&#8217;re interested in a revenue share.  Now&#8230;lets consider the risk element.  </p>
<p>Here&#8217;s a deal: I&#8217;m taking all the risk, and I see the value of your idea.  So how about I do it for €5k, and there&#8217;s some compensation for the risk.  There&#8217;s two things we can do.  How about the first €10k it makes goes 100% to me, and after that we go 50/50 ?  Or&#8230;How about we reflect the risk in the revenue share from day 1.  So&#8230;Your investment is only €5k, but the revenue split is 70% to the developer, 30% to you.</p>
<p>Still interested?</p>
<div id="attachment_203" class="wp-caption alignnone" style="width: 250px"><img src="http://www.tapadoo.com/wp-content/uploads/2009/08/3335901360_d60eab54b3_m.jpg" alt="Pic Credit: flickr user texaseagle" title="3335901360_d60eab54b3_m" width="240" height="160" class="size-full wp-image-203" /><p class="wp-caption-text">Pic Credit: flickr user texaseagle</p></div>
<p>Hey&#8230;..where&#8217;d ya go?</p>
]]></content:encoded>
			<wfw:commentRss>http://tapadoo.com/2009/the-problem-with-revenue-share/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Some things to expect after your app gets launched</title>
		<link>http://tapadoo.com/2009/some-things-to-expect-after-your-app-gets-launched/</link>
		<comments>http://tapadoo.com/2009/some-things-to-expect-after-your-app-gets-launched/#comments</comments>
		<pubDate>Fri, 29 May 2009 09:41:11 +0000</pubDate>
		<dc:creator>dermdaly</dc:creator>
				<category><![CDATA[iePhoneBook]]></category>
		<category><![CDATA[iphonedev]]></category>
		<category><![CDATA[FAQ]]></category>

		<guid isPermaLink="false">http://www.tapadoo.com/?p=157</guid>
		<description><![CDATA[OK. So you&#8217;ve made it through the ADC signup process. You&#8217;ve managed to get an itunesconnect account. You&#8217;ve even managed to get some contracts into place, submitted and had your app approved, and now it is on sale! Well done. [...]]]></description>
			<content:encoded><![CDATA[<p>OK.  So you&#8217;ve made it through the ADC signup process.  You&#8217;ve managed to get an itunesconnect account.  You&#8217;ve even managed to get some contracts into place, submitted and had your app approved, and now it is on sale!</p>
<p>Well done.  This post is to give you some ideas about things to expect from release onwards. I went through all of these questions, and either helpful xcakers, or patience got me the answers.  Hopefully, you&#8217;ll read this, and be able to relax.</p>
<p><strong>Question 1: Where is my app ?  I can&#8217;t see it.</strong><br />
When you app goes on sale, it will be available on itunes via the direct link.  So firstly, lets see if it is available on its own link.  You can find this in itunesconnect.  When your app is ready for sale, itunes connect has a little arrow link next to the icon.<br />
<img src="http://www.tapadoo.com/wp-content/uploads/2009/05/itunesconnectgrab.png" alt="itunesconnectgrab" title="itunesconnectgrab" width="381" height="232" class="alignleft size-full wp-image-162" /><br />
This is the direct itunes link.  Click on this, and itunes should open up on your apps page. Phew!</p>
<p><strong>Question 2 &#8211; But are some of my users complaining that they can&#8217;t follow the link?</strong><br />
The itunesconnect link you copied for your landing page may have begun itms:// If you installed itunes after your browser, it will have installed a protocol handler such that the browser knows to launch itunes.  If however the browser was installed after itunes, it is not going to know how to open itunes links.  Actually, the fix is simple: Change the url scheme from itms:// to http:// &#8211; the link should work everywhere now.</p>
<p><strong>Question 3: Great &#8211; But how are people going to find it?</strong><br />
Relax.  You app will be indexed and searchable soon.  It takes a few hours after going on sale, but it will be searchable based on the description you have given it.  This means you may need to think about the words you use in your description.  For example; my app &#8220;Ireland&#8217;s Phone Book&#8221; did not show up in searches for &#8220;Ireland&#8221; but it did for &#8220;Irelands&#8221;.  This was fed back to me, so I updated the description to ensure that the word &#8220;Ireland&#8221; was in the description.  Now it is found for this search term.<br />
Of course, your application will also be available in the &#8220;recent releases&#8221; section, provided you followed my advice on <a href="http://www.tapadoo.com/2009/if-theres-one-tip-id-give-you-when-submitting-your-app-this-is-it/">this post</a>.<br />
Thirdly, your app will be searchable within the category in which you&#8217;ve submitted it.  If you can&#8217;t find your app after a few hours, relax.  Have a cup of tea.  Come back a few hours later, check again.<br />
Incidentally, searches take into account popularity, so the more popular your app is, the higher it will appear in search results. </p>
<p><strong>Question 4: When will my downloads/sales info be available ?</strong><br />
Download and sales figures will show up on itunes connect typically by mid morning of each day.  So, check around 11am the day after you go live and see if there&#8217;s some data in there.  There&#8217;s a nugget of information on sales figures at the end of this post, stay tuned.<br />
Sometimes, this is later, so again&#8230;relax if its not there&#8230;give it a couple of hours.</p>
<p><strong>Question 5: When can I read my reviews?  It says there&#8217;s some present, but I don&#8217;t see them.</strong><br />
Don&#8217;t get me started on the reviews.  Ok.  Here&#8217;s the deal as far as I can see.</p>
<ol>
<li>They appear to be somewhat moderated, so may take some time to get through.  Don&#8217;t expect to read reviews for a few days (my first ones showed though after about 5 days I think).</li>
<li>The number of review seems to be incorrect most of the time.  Perhaps the number of reviews is in fact the number of ratings + the number of reviews.  Example: It says today the iePhoneBook has 128 reviews.  If I drill in, there are 57 reviews that I can read.  You&#8217;ll learn to ignore the figures, and just read the reviews.</li>
</ol>
<p><strong>Question 6: What can I do about unfair reviews?</strong><br />
Not a lot I&#8217;m afraid.  You can report a concern about a review, but I don&#8217;t know how much this helps.  For example, 1 review of my apps was more like a personal ad in &#8220;In Dublin&#8221;.  Its actually inappropriate, so I won&#8217;t reproduce it here.<br />
I have reported a concern about this by marking it as &#8220;not a review&#8221; and it went away after about 10 days.</p>
<p><strong>Question 7. How can I promote my app?</strong><br />
 Well there&#8217;s lots of things you can do.  You&#8217;ve just released a piece of software like any other.  If you&#8217;ve budget, hire the mansion house, buy a load of champagne, and get someone famous to talk about it.  I&#8217;m guessing you don&#8217;t, so here&#8217;s what I did:</p>
<ol>
<li>I ensured I had a <a href="http://www.tapadoo.com/iephonebook">dedicated landing page</a> for details about my app.  This page includes an itunes store link, an iPhone graphic with my screen shots, and the &#8220;Available on the App Store&#8221; badge.  As previously mentioned, you need to sign a license agreement to use these graphics.</li>
<li>I twittered about my release, including my landing page.  Some xcakers where kind enough to Retweet, which meant that there was a couple of thousand people made aware of its existence on day 1.  This definitely helped.</li>
<li>I sent a note to friends who have iPhones.  I asked them for reviews.  What I basically asked was: If you like this, please give it a 4 or 5 star review.  If you don&#8217;t think its worth of this, please don&#8217;t review, but get in touch to tell me why it doesn&#8217;t deserve the rating.  I think this is fair &#8211; You&#8217;re not asking people to lie on your behalf, and you are asking them for feedback if they think it is rubbish. </li>
</ol>
<p>I&#8217;ve got to say however, that the best form of marketing for your app is getting a prominent place in the various itunes charts:</p>
<ol>
<li>If you get to number 1 free app in any category, your icon gets used as the icon for the category when browsing the app store in the phone.  Very nice.  This gives you prominent positioning on the store.  I would suspect that this could potentially be another reason why free apps are good publicity for pro editions.</li>
<li>If you get to number 1 overall in any country, your app will be on the front page of itunes.  Exposure like this is very hard to get, and worth its weight in gold.</li>
</ol>
<p><img src="http://www.tapadoo.com/wp-content/uploads/2009/05/iconref.png" alt="iconref" title="iconref" width="395" height="393" class="alignleft size-full wp-image-165" /><br />
I know this is a chicken-and-egg scenario, but basically, doing well will bring more sales/downloads.</p>
<p><strong>Question 8. How can I get feedback and engage my users</strong><br />
That&#8217;s the holy grail for iPhone developers.  Im still learning that one.  I hope to blog on this in the future.</p>
<p><strong>Other Good Stuff</strong><br />
You&#8217;d be surprised to see who uses your app and feedback that you may get.  These two took me pleasantly by surprise.<br />
I got the following review a couple of days after launch:</p>
<blockquote><p><strong>5 Star</strong><br />
<strong>PaoloTullio</strong><br />
If you&#8217;re fed up paying 11811 every time you need a number, here&#8217;s the answer. A really well designed app that does exactly what it says on the tin. Only one question arises &#8211; why is it free? I would happily have paid for this.</p></blockquote>
<p>Who?  <em>Paolo Tullio</em>?  The well-known restaurant critic?  Dagnammit, I shoudda opened a restaurant.  Getting 5 Stars from Paolo Tullio would do my restaurant no end of good.<br />
(I got in touch with Paolo&#8217;s website, and got a very nice mail explaining that it was him who left the review).</p>
<p>Then, a couple of nights later, whilst on twitter, I got a <a href="http://twitter.com/theblizzards/statuses/1839897258">tweet from &#8220;TheBlizzards&#8221;</a></p>
<blockquote><p>Wicked PhoneApp man !</p></blockquote>
<p>Oh. How cool is that.</p>
<p>I didn&#8217;t expect feedback from people in the public eye, but it was nice.</p>
<p>OK.  I promised a nugget.  Fellow Xcaker,Padraig pointed me at <a href="http://code.google.com/p/appsales-mobile/">The App Sales application</a>.  Download it,  install it on your phone.<br />
You might also want to get <a href="http://code.google.com/p/reviewscraper/">Review Scraper application</a><br />
Both of these do the grunt work of getting information out of itunes.  Run the app sales one once a day &#8211; remember after 11 am or so!</p>
<p>Hope you find this useful.  If you&#8217;re an iphone dev and you&#8217;ve other useful pointers, feel free to add them to the comments section.</p>
]]></content:encoded>
			<wfw:commentRss>http://tapadoo.com/2009/some-things-to-expect-after-your-app-gets-launched/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

