Monday, November 16, 2009

Developers leaving the iPhone? Not yet.

There have been a number of articles written lately about developers leaving the app store in frustration. ArsTechnica Facebook Developer The reality is that these folks leaving are very much a minority and will make very little difference in the short term. It is kind of like an employee that leaves a company because the employer is treating the workers like crap. The question is why do the other folks not leave? And will that change?

The reason is that there are over 50 million iPhones and iPod Touches. iPhone sales numbersOver 50 million potential customers. No other app store can match this right now. Trism

Fast forward 12 months. Because Android isn't locked to just one carrier or even one manufacturer, the number of Android devices will grow significantly over the next year. Apple is leaving money on the table by locking themselves into AT&T. Sure, they are more profitable per handset sold, but the cost of not having sold twice as many devices will catch up to them within a year.

Back to my employee/employer example... If an employer abuses its employees when the economy is down and workers can't leave, it will catch up with them as soon as the economy picks up. Apple will find themselves in this situation a year from now. A year from now the Android numbers will be high enough to make it every bit as appealing of a platform to business on as Apple's. At the end of the day it is all about the numbers.

Wednesday, October 14, 2009

Mockapp: quick iPhone app prototyping

I stumbled on to Mockapp the other day. It is a series of graphics wrapped up in ppt slides, designed to enable you to easily and quickly create visual mockups of an iPhone app.

I used it yesterday to put together a mockup for a customer. It was awesome! I used to do this the hard way using cut and paste with screenshots and other graphics. This is so much better to have all the standard widgets already sliced up for you.

Here is a link to their website. http://mockapp.com/

Monday, October 12, 2009

The two App Stores

Marco Arment wrote this great article on the app store. http://www.marco.org/208454730 It is highly recommended reading. It does a great job of summarizing the need for market analysis. But mostly I like it because he so eloquently summarized my thoughts when I read Ged Maheux of the Iconfactory whining http://gedblog.com/2009/09/28/losing-ireligion/ about his latest app not doing well. Sometimes people just over think things when they put their app together.

Friday, September 25, 2009

Evaluate your iPhone app competition

I develop apps for other people. Often they will come to me with their app idea and their dream to make a lot of money on the app store. Seldom have they actually done any research on the app store about their potential competition.

I came across an article today that was well thought out in this regard. http://timcascio.wordpress.com/2009/09/03/how-to-determine-which-of-your-iphone-app-ideas-has-the-most-merit/ The key part I am quoting below. On a side note, for me, the lack of the ability to examine the competitive landscape is the biggest reason that I have not done anything for the Android platform. You have to have a device, and a cell plan to support it in order to browse the Android store.



"Close evaluation of the competition is critical and often forgotten step. You can have strong development, design and great marketing, but overlooking the competition can prove fatal.

The iPhone App Store is an open book with over 65,000 apps. Use this to your advantage. Scour the store for apps that appear to compete with yours.

Download free and paid versions to kick the tires.
Focus first on those with the highest number of reviews.
Read the reviews to see what people like about the apps and what they don’t.
Pay close attention to the feature requests.
Read the application descriptions to see how your competition is positioning their app and consider how you should differentiate yourself.
Make comparison of pricing and feature sets offered by your competitors.
Once you’ve identified your short list of competing apps, search Google to see how those apps are being promoted outside of the App Store via YouTube, Twitter, forums, publicity and websites.
Create a competing apps spreadsheet or database to capture all of your competitor information in one place and update frequently over time."

Thursday, September 17, 2009

UIScrollView with controls

Apple has created a number of samples on how to use a UIScrollView control. But all of them are for scrolling graphics and not for controls. What I wanted to do was to have a view that was taller than the device and allow the user to scroll through the controls on the page. And I didn't want to use a TableView to do it. I wanted to use IB.

I finally found the right clues in an old discussion forum post. http://discussions.apple.com/thread.jspa?messageID=9060384

Here is the Cliff Notes version.

Create a new ViewController. Open the xib in interface builder. Delete the view control and replace it with a UIScrollView. Be sure to link the UIScrollView as the view for the File's Owner.

Go back to your code and add a UIScrollView reference in your .h. e.g.
@property (nonatomic, retain) IBOutlet UIScrollView* scrollView;

Don't for get to link it up in IB.

Now in your viewDidLoad method, add the following line:

scrollView.contentSize = CGSizeMake(320, 700);

Now you can add all the controls you want to the UIScrollView control over in IB. Labels, buttons, everything.

I'm surprised that there isn't an easier way to do this in IB. And if there is, it isn't obvious to me how to do it - so please share.

Thursday, August 27, 2009

Fight the race to .99

There was some talk a while back about the race to the bottom, the pressure to price your app at $.99. There was a lot of talk about various things that some people thought would help. I thought most of the things that were suggested might be helpful. But really what the developers need are marketing tools that allow a developer to leverage a good app into good tools. A lot of this centers around brand success. Here are some simple things that I think would help a lot.

1. Allow developers to link to their apps as a group.

Let's say that I have a good app. People like it and use it. I would like to provide a link from this one app, to my other apps. It sounds simple enough, but isn't possible today. Check out Digital Chocolate. They have implemented a special word in their app descriptions - dhoc - in order to allow them to search for just their apps. The problem is that the iTunes app on the device only lets you link directly to an item and not to a publisher/artist.

Let me build up my brand.

2. Encourage users to rate apps that they run regularly.

My Pinch Media stats tell me that less than 10% of users rate apps that they have purchased. Give users a special app that lets them rate the apps that they run regularly. Make it easy to rate apps.

3. Let developers link directly to the app ratings system.

The NYTimes app attempts to do this. If you run their app a few times successfully (a challenge), then it will prompt you to go to the app store to provide feedback. They did this because it was easier than fixing their buggy app - but I digress. The problem is that the only thing you can do is link to the app description. I would like to be able to put the user right at the screen where they rate the app.

Why is that important to take them right to the app? I have had more than one friend buy my app and say they love it! Then I ask them if they have reviewed my app. They give me this confused look and ask how to do that. These are technical folks too. Engineers, IT folks and such. It is just to easy to give negative feedback on an app and to hard to give good feedback.

4. I'm going to write an app that does this one.

5. Provide some sample code to the developers on how to do the above items easily.

Encourage the developers to do it in a uniform manner.

Rate of decline in the usage of OS 2.x

I use Pinch Media's libraries in some of the apps that I develop. Even if you don't use their library, it is worth signing up on their site just to get their weekly statistic reports. Every week they send out a report telling you various things, including what OS version people are running across all the stats they collect. Currently they report that 2.x usage is at about 23%. As a developer, that kind of sucks. It would be so much easier if you didn't have to consider the 2.x crowd.

I'm a bit of a statistics and spreadsheet junkie. And I was curious about the rate of decline and what that would mean for the future. More importantly, at what point can I ignore the 2.x users because they are less than 1% or something close to that. The answer is... Thanksgiving. If the trend continues at a steady rate (it won't), then there will be almost no 2.x users by the first week of December - well, less than 1%.

To me that says that if you are currently developing a new app, don't even worry about the 2.x folks.

Saturday, August 8, 2009

Installing an app prior to release on iTunes

I develop iPhone and iPod Touch apps for other people. At some point in the development process they will want me to send them a copy of the app so that they can put it on their device prior to sending the app to Apple. This is done with what Apple calls Ad Hoc Provisioning. There are a few hoops to be jumped through in order to pull this off.

1. Send your developer your Unique Device Identifier or UDID for short. Your UDID is that nice long number that uniquely identifies your device to Apple, other developers, etc. You could copy it by hand out of iTunes, but the easiest and least error prone way to do this is to run one of the free apps that helps with this. About Device is a pretty good one. Follow the link and install it via iTunes. When you run it, it will gather a bunch of information and put it into an email for you. Send that to your developer.

2. Your developer will then send you a build of the app (zipped up) and a file that ends with .mobileprovision.

3. a) If you are running on a Mac, unzip the app and drag it and the mobileprovision file onto the iTunes icon on your doc.
b) If you are running Windows, then your developer needs to send you an .ipa file. This is basically the same data zipped up in a folder named Payload. You can just drag this .ipa file onto Library → Applications in iTunes. For more details instructions I recommend checking out this website over here.

4. Do a sync and you are done.

When you do an update I recommend uninstalling the app from the device first.

Tuesday, July 28, 2009

iPhone, 99 cent therapy

Step 1: Download Pocket God Pocket God onto your iPhone or your iPod Touch. That's the 99 cent part.
Step 2: Rename one of the island natives to someone; like your boss, neighbor, that guy that cut you off on the way to work this morning, or someone else that is particularly deserving.
Step 3: Spend the next 10 minutes flipping that native into the water. Or feeding them to the shark. Or punting them into the volcano... well, you get the picture. My favorite is the lightning strike.

Ah, much better.

Thursday, July 9, 2009

Sqlite and 'Database is locked'

For some reason I started seeing a few 'Database is locked' errors during development yesterday. This error was showing up when I tried to do an update/change on a row. This was really perplexing to me because I had used this kind of update and select code regularly before. Why the problem now? The error seemed to show up more frequently if I had done a large number of select statements prior to doing the update. But that of course doesn't make sense because as we all learned in our DB classes in college, reads do not cause database locking.

It took quite a bit of looking to finally find something that pointed me in a good direction. A user posted here to check out the SqliteBooks sample app from Apple. http://www.iphonedevsdk.com/forum/iphone-sdk-development/14106-sqlite-database-locked.html

It turns out that finding a link to download an SDK 2.x sample app is quite difficult. But I digress. The SQLiteBooks sample app was very educational.

It turns out that I had learned to do sqlite from one of the books I bought when I first started this journey. I think that somewhere in my cut-and-paste journey I had lost the sqlite3_finalize statement that should come at the end of an sqlite sequence (read or write). I added it back all over the place and all my locking pain went away.

Tuesday, July 7, 2009

Why aren't iPod Touch users upgrading?

I use the analytics package from Pinch Media with my apps. One of the interesting things that I get to see with it is the breakdown of what OS version my users are using. I also get to see what percentage of my users are running an iPod Touch vs an iPhone. Now what I do not get to see unfortunately is the breakdown of OS usage by device type. That would be very interesting indeed. What really piques my curiosity is that the percentage of my users that are running iPhones (70%) and the percentage of my users that are running OS 3.0 (72%) is intriguingly close to the same number.

But, as my Pragmatic Marketing friends are fond of saying, "Your opinion, while interesting, is irrelevant."

So I've done a little poking around on the web. Admob published some interesting numbers the other day that claim that only 1% of iPod Touch users are upgrading. Admob published those number June 22, 2009. So here we are a few weeks later and I suspect that the numbers are a bit different. But as an iDevice developer, I still find that number disturbing.

So, why aren't they upgrading? Performance statistics like these from PCmag can't help. Is it the $10 upgrade price? Are there just not enough compelling new features in the new OS?

Monday, May 25, 2009

UIWebViewDelegate

I've been trying to figure out a few things about UIWebViewDelegate. In the process I noticed that a few of the people that try to put up code about it just aren't quite doing it 100%. So I thought that I would give it a go.

First of all, why would you want to use UIWebViewDelegate?
- to turn off the 'action' popup when people hold their finger over a graphic
- to show an activity indicator while your content is loading
- to catch certain loading errors for UIWebView

There are somewhat subtle things to do that really put some polish on your app. Unfortunately a lot of apps skip this, especially the first one.

Now, before I get into how to do it, I want to give credit where credit is due. I started from the example written up on http://www.iphonesdkarticles.com/2008/08/uiwebview-tutorial.html. They really did a good job with their article. But, naming their UIWebView object the way they did causes some conflict once you add the delegate.

Then, over at http://forums.pragprog.com/forums/83/topics/1450 is the best write up that I found on how to tie in the UIWebViewDelegate. Except they left out a couple of key details. Specifically that you need to add this line to viewDidLoad in order for webViewDidFinishLoad and other delegate methods to properly get called.

self.theWebView.delegate = self;

And then of course how to properly dealloc everything according to the doc.

theWebView.delegate = nil;
[theWebView release];

Now there are still probably some things that should be done to pretty things up if you were to release this to users. But that's not the point of today's exercise.

Here is a link to the source code. http://www.tweedleworks.com/download/WebViewDelegateTutorial.zip

Friday, May 22, 2009

iPhone SEO

I've spent the day doing battle with the iTunes search engine and I just couldn't figure it out. I have four apps on the app store right now and only one of them was responding to matches on words in my app descriptions.

Basically the whole text was not showing in the index. In the app that was working, text at the top and at the bottom of the index is showing up in searches. Nothing but the title is matching on the broken descriptions.

I tried all kinds of things, even switching the browser that I used to edit the text. Nothing worked. This was seriously effecting my sales.

And then someone in the developer forums made a suggestion for a fix. Evidently Apple has started clamping down on app name dropping. I was mentioning three well known apps in my description. I removed the references and waited a bit and now everything is fixed. Whew!

Thursday, May 21, 2009

How to rate an iPhone app

Here are some instructions for posting feedback on iPhone apps. If you have already set your screen name to your username, then option #2 works just fine and is still pretty valuable.

In order to post feedback, you can do one of the following from your iPhone:

Option 1:
1. Go back into the app store.
2. Find the app
3. scroll to the bottom and click on the link to look at the reviews
4. right at the top it should show a link to "write a review"
5. fill in a screen name - it can be anything so don't use your last name/username
6. write a review; the critical part is to set the rating from one to five stars
7. Click Send

Option 2: (the no writing option)
1. delete the app (don't worry, we'll get it back)
2. when prompted, give it a star rating
3. Go back into the app store and buy the app.
4. Once the app starts installing, you will see a prompt telling you that you have already purchased the app and it will now be installed for free

Whenever there is an update to the app, go back and repeat either option 1 or 2. If you wrote a review, you will get a chance to update the review or simply post it as valid for the new version.

Wednesday, May 20, 2009

Cause and Effect

I've been trying to figure out what determines app store ratings results, specifically the number of stars that show up. Now the first problem is that the ratings show up in multiple ways with multiple values. Let's go over each.

In iTunes on your computer

If you have a new version of an app that was recently put up, then you likely will not have enough ratings for iTunes to show you a rating average for that version. All it will show you is the star average across all versions. This number tends to balance out over time and isn't affected much by any particular day's ratings. Also, I don't think that iTunes is the main mechanism for people to buy apps. At least it isn't for my apps. But I'll get to my example later.

On the iPhone

When you browse the app store on your iPhone you really only see the star ranking and a count of the number of reviews. This shows up in the search results and at the top of an app description. If you scroll down you can see a link to the real reviews. But most people just see the stars.

What contributes to it? Any time someone deletes your app, they are prompted to rate it. Considering they are deleting the app, the rating usually isn't good. Or someone can navigate through the app store to an app they have already purchased and leave a review. My experience is that this doesn't happen very often as a percentage of people that actually use the app.

The Problem

Unlike iTunes, the iPhone app store only shows you the average rating for the current version as long as there has been one rating. If you have one, one star rating for the current version, then you have an average rating of one star. It will not matter what your previous average is.

For example, I was just looking at this app called VanillaSurf, a multi-tabbed web browser. As of when I'm writing this, it has 199 ratings for all versions for an average of three stars. But they recently put out an update and there has only been one rating - five stars. In iTunes it shows the average for all versions and tells you there have not been enough reviews for the current version. On your phone it will give you a five star result with one review.

The trick is that for app developers, you need to stay on top of your reviews when you change versions. Get your loyal users to update their reviews. If you don't then what happened to me, might happen to you. Let me explain.

I've updated my main app two times. This last time, I updated it and I didn't get any new written reviews right away. However, I did get one user that didn't like my app and uninstalled it right away, giving it a one star rating. Ouch. That one star rating sat for a couple of days, and then it became the average. So suddenly I went from about 3 stars average to 1 star. My sales dropped like a stone. Cement shoes. Dead. I'll be more specific. 90% drop in sales.

Now the interesting part is that browsing my app on iTunes still gave the 3ish star average which is true across all versions. The drop in sales plus the difference between the two storefronts says something about how people find my app.

When I noticed this after the first day of poor sales, it was bad. Woe is me! The world is coming to and end! What am I doing developing apps??!!

After I calmed down, I decided to go try to fix it. I called up a few of my friends and asked them to update their review. Evidently they are incapable of doing this one task. I finally had to go over to someone's house and help them do a review. It says something about how hard it is to deliver a good rating, doesn't it?

Okay, so about mid day on day two someone posts a positive rating. I know it's there. But it doesn't show up on the app store. For about 18 hours. And it was about 36 hours before it changed the average star rating. I suspect that this gets recalculated at about midnight.


Okay, here's how this blog is going to work. The above is mostly just therapy for me. I'm working on my own and so I don't have coworkers to talk to when I figure something out. Here is the executive summary.

Summary: Keep an eye on your reviews right after an update. Don't wait for bad ones to show up because it will affect your sales significantly and it will take a long time to fix it. And if you don't have a bad review from a real customer, don't worry - your competitors will put one there for you. Immediately get your buddies to rate your app. And then let your real customers create a real average over the next few weeks.

I wonder: If you comp someone a copy of your app using a promo code, can they rate your app on the app store?