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.