Archive for April, 2009

0

It seems every time I need to add some functionality to my app, I end up refactoring other code in the app so the new functionality can use it.  This is a GOOD thing.  Especially when one is not yet an expert in iPhone app development.  

It takes a fair amount of experimenting to learn how to write for the iPhone.  This experimentation yields pretty messy code, but code nonetheless.  In an ideal world I would throw away this experimental code and rewrite it once I learned the “right way”.  However, I fear no app would ever get finished that way.

Instead, go ahead and use the experimental code, realizing that it isn’t perfect.  Fix and clean it when you either need to reuse it somewhere else (and refactor mercilessly), or when you find that your code doesn’t really work as well as you thought, e.g. it won’t rotate worth a darn.

0

Building an iPhone Business: A Look Back to Look Ahead
Elia Freedman, Infinity Softworks

Numbers

  • $222M net to developers in first 9 months of app store
  • .4% of apps are generating 15% of the income
  • Average app makes $3000 (~$300/month)
  • Numbers derived by Elia
  • Pinch Media has a lot of data
  • Mean price = $0.99, Average = $2.65

Infinity Softworks

  • 12 years in business

App Store

  • Great user experience
  • Margins are excellent (70%)
  • Minimizes tech support
  • Play by Apple’s rules
  • Prices are depressed artificially
  • Eliminates many promotion options

Prices

  • 6K @ Free
  • 11K @ 0.99
  • 3.2K @ 1.99
  • 1.7K @ 2.99
  • Impulse -or- buy cheapest?

Promotion

  • Top paid apps
  • appstore search terms
  • Word of mouth
  • Vertical marketing
  • Bloggers

Product Pricing

  • Free, Lite or LE version
    • But free people are not the same as buying people
  • Multiple programs
    • Good way to leverage users across multiple buys
  • Cross platform
    • VERY difficult
  • Add-ons
    • Kindle
    • Subscriptions
  • Real money is on the web and desktop

Summary

  • No easy money in AppStore
  • Highly vertical products can get highest prices
  • Highly horizontal products can sell lots
  • Don’t watch the sales every day
    • Numbers come out at 1:45am!

Discussion

  • Advertising
    • AdMob - click through (when advertising yourself, try to limit click through)
    • Exclusivitiy - all ads are for one company
  • AirSharing
    • 1 million downloads when free
    • $5.99 then $4.99
    • Moving to Pro ($10) / Lite ($?) model
  • Future
    • People who aren’t making a living will move on.
0

Now if I can just get the testers to install it! ;-)

0

Enabling rotation has been a pain, and I’m not sure it is really all that necessary for my app, but it has certainly forced me to clean up my code. It seems like every single thing I had done “wrong” in the code broke when I turned on rotation. It has forced me to really clean up my view controllers and memory management. In the end, I might even turn off rotation. But enabling it will have been good for the app in the long run.

Today’s tip: Enable rotation in your app! It’s the good kind of pain!

0

And today’s learning is regarding Objective-C and accessors, from Scott Stevenson at theocacao.com:

When using properties with the dot syntax, prefix the name with self to use the accessor:

// direct access
value = studio;
studio = value;

// uses accessor methods, sends KVO notifications
self.studio = value;
value = self.studio



Even if you have garbage collection enabled, you should still use the accessor methods in most cases because Key-Value Observing, and Cocoa Bindings depend on these methods being called to synchronize changes across objects.

A subtle point, but an important one. Especially when dealing with pesky object retention problems!