2. Start thinking about an app
Create a Mockup: http://iphonemockup.lkmc.ch/
www.MitAPP.com http://twitter.com/MitAPP
3. And now?
NavBar? TabBar?
how many buttons?
Colors?
www.MitAPP.com http://twitter.com/MitAPP
4. Make a lot of sketches
www.MitAPP.com http://twitter.com/MitAPP
5. DEMO
• DEMO (15-20’):
Brainstorming about a project
www.MitAPP.com http://twitter.com/MitAPP
6. Turning an iPhone Idea into a
successful iPhone app
4-step that lead from an initial idea to the final
product that’s available in the AppStore. First there is great idea, right?
But how good is the idea really? Is it
1 worth to proceed and invest money in
developing an iPhone app?
Checking an idea and validating its
feasibility is one of the most important
2 steps to avoid spending money on the
wrong thing!
Once the idea is confirmed as having
the right potential the
3 development process can be kicked off.
Do it yourself or get the pros in to do
it for you.
Submitting to Apple and getting
the app on users phones is next.
4 Just putting the app in the AppStore
wont sell it!
[source: jtribe.com.au]
www.MitAPP.com http://twitter.com/MitAPP
7. 1
The Idea
“Hey, I have a great iPhone App idea!”
So you got a great iPhone application idea. That is obviously
the very first step of every great iPhone app.
Make sure you know who the end-user will be and
what problem it will solve. But even an unconventional
“quirky” idea may become a very successful iPhone app.
We are not going to tell you how to generate a great idea.
We’d rather tell you how to validate and do some sanity
checking of you great idea.
Manifest your idea with some key principles that describe the
core of your idea.
[source: jtribe.com.au]
www.MitAPP.com http://twitter.com/MitAPP
Prepared by jTribe, 2009
8. 2
The Idea Check
“...and it actually could work”
The critical question is actually what you want to achieve with your iPhone app.
Basically there are two ways to get return on an iPhone app.
1) make a million through AppStore sales
2) use it as a marketing tool to promote another service or product
In both cases it is crucial to understand the structure and size of your user-base.
In the first case the size will determine the dollar-return you can make with the
app. In the second case it will determine the marketing effect.
Assuming you want to make a million dollars through AppStore sales it is crucial
that you understand the iPhone economics. How many iPhone users are there?
How much money can I make in my segment? ...
If you don’t plan to become number one in the AppStore in the category you
target then don’t expect a return of investment.
We highly recommend that you ensure that your idea can enter the top 10 apps
in the AppStore. Otherwise, consider it a learning exercise.
[source: jtribe.com.au]
www.MitAPP.com http://twitter.com/MitAPP
Prepared by jTribe, 2009
9. 3
Development
“Lets get this baby built”
So you are convinced that your idea could fly? Then it’s time to get in to the technical part.
Development costs money. Great iPhone development cost even more money.
If you are really committed to develop the best possible iPhone app then you should move
ahead and engage the development process. However, if you have doubts at this stage then
don’t waste your money or effort.
The development process could fill a book. Assuming that you are not a professional iPhone
developer here is a brief summary:
Get your scope right. Prepare your wireframes. Get some quotes from iPhone
developers. Make a decision and choose the most awesome developers you can afford.
Now let the iPhone developers do their magic and make sure they stick to your initial idea.
Find a group of beta tester. Submit your iPhone application to the Apple AppStore. Be
prepared to wait a couple of weeks before Apple has approved your app.
There are many little things that could go wrong in this step so get some professional help.
AND DON’T FORGET YOUR MARKETING
[source: jtribe.com.au]
www.MitAPP.com http://twitter.com/MitAPP
Prepared by jTribe, 2009
10. 4
Life in the AppStore
“I just made a million $”
Great, you got your app in the AppStore.
If you have timed your marketing correctly you should have a huge
initial boost of app downloads. Make sure you are going to keep the
momentum up.
Be wise around any prices changes decisions and consider price
elasticity.
Monitor your app usage. (e.g. pinchmedia.com)
Communicate with your app users. (e.g. shoutmob.com)
Use tools and promotion means.
Release updates.
Keep on top of the curve. If your idea flies then makes sure that you
add features users may like.
[source: jtribe.com.au]
www.MitAPP.com http://twitter.com/MitAPP
Prepared by jTribe, 2009
11. Useful Tips to plan
• Work in group (if possible)
• Search simil works, study the market
• Maybe there are already a lot of code
developed and free to use...
• Agile Tech.
• Code is the last thing
www.MitAPP.com http://twitter.com/MitAPP
12. Anatomy of an Application
• Compiled code
■Your code
■ Frameworks
• Nib files
■ UI elements and other objects
■ Details about object relationships
• Resources (images, sounds, strings, database, etc.)
• Info.plist file (application configuration)
• UIKit Framework
• Provides standard interface elements
www.MitAPP.com http://twitter.com/MitAPP
13. UIKit Framework
• Starts your application
• Every application has a single instance of UIApplication
■ Singleton design pattern
@interface UIApplication
+ (UIApplication *)sharedApplication
@end
■ Orchestrates the lifecycle of an application
■ Dispatches events
■ Manages status bar, application icon badge
■ Rarely subclassed
■ Uses delegation instead
www.MitAPP.com http://twitter.com/MitAPP
14. Delegation
• Control passed to delegate objects to perform application-
specific behavior
• Avoids need to subclass complex objects
• Many UIKit classes use delegates
■ UIApplication
■ UITableView
■ UITextField
www.MitAPP.com http://twitter.com/MitAPP
15. UIApplication Delegate
• Xcode project templates have one set up by default
• Object you provide that participates in application lifecycle
• Can implement various methods which UIApplication will call
• Examples:
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application;
- (void)applicationWillResignActive:(UIApplication *)application;
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;
- (void)applicationDidFinishLaunching:(UIApplication *)application;
- (void)applicationWillTerminate:(UIApplication *)application;
www.MitAPP.com http://twitter.com/MitAPP
16. Info.plist file
• Property List (often XML), describing your application
■ Icon appearance
■ Status bar style (default, black, hidden)
■ Orientation
■ Uses Wi-fi networking
■ System Requirements
• Can edit most properties in Xcode
■ Project > Edit Active Target “Foo” menu item
■ On the properties tab
www.MitAPP.com http://twitter.com/MitAPP
17. Model,View, Controller
Model
• Manages the app data and state
• Not concerned with UI or presentation
• Often persists somewhere
• Same model should be reusable, unchanged in different interfaces
www.MitAPP.com http://twitter.com/MitAPP
18. Model,View, Controller
View
• Present the Model to the user in an appropriate interface
• Allows user to manipulate data
• Does not store any data
■ (except to cache state)
• Easily reusable & configurable to display different data
www.MitAPP.com http://twitter.com/MitAPP
19. Model,View, Controller
Controller
•Intermediary between Model & View
•Updates the view when the model changes
•Updates the model when the user manipulates the view
•Typically where the app logic lives.
www.MitAPP.com http://twitter.com/MitAPP
20. Model,View, Controller
Controller
outlets
actions
Model
Object
www.MitAPP.com http://twitter.com/MitAPP
21. Nib Files - Design Time
• Helps you design the ʻVʼ in MVC:
■ Layout user interface elements
■ Add controller objects
■ Connect the controller and UI
www.MitAPP.com http://twitter.com/MitAPP
22. Nib Loading
• At runtime, objects are unarchived
■ Values/settings in Interface Builder are restored
■ Ensures all outlets and actions are connected
■ Order of unarchiving is not defined
• If loading the nib (.xib file) automatically
creates objects and order is undefined, how do I
customize?
■ For example, to displaying initial state
www.MitAPP.com http://twitter.com/MitAPP
23. Nib Loading - awakeFromNib
• Control point to implement any additional logic after nib
loading
• Default empty implementation on NSObject
• You often implement it in your controller class
■ e.g. to restore previously saved application state
• Guaranteed everything has been unarchived from nib,
and all connections are made before -awakeFromNib is
called
- (void)awakeFromNib {
// do customization here
}
www.MitAPP.com http://twitter.com/MitAPP
24. Controls - Events
• View objects that allows users to initiate some type of action
• Respond to variety of events
■ Touch events
■ touchDown
■ touchDragged (entered, exited, drag inside, drag outside)
■ touchUp (inside, outside)
■ Value changed
■ Editing events
■ editing began
■ editing changed
■ editing ended
www.MitAPP.com http://twitter.com/MitAPP
25. How to Build an iPhone App that
Doesn't Suck!
• Step 1: Decide what to build
Principle 1: Know your users.
• Step 2: Visit the app store
Principle 2: Don't build your app in a bubble
• Step 3: Explore Possible solutions
Principle 3: Be minimal
• Step 4: Sketch
Principle 4: Quality through quantity
• Step 5: Build a paper prototype
Principle 5: Fail early to succeed sooner.
[Source] Stanford CS193P
www.MitAPP.com http://twitter.com/MitAPP
26. How to Build an iPhone App that
Doesn't Suck!
• Step 6: Fire up omnigraffle (or Photoshop)
Principle 6: Be pixel-perfect
• Step 7: Do It All Again
Principle 7: Remember that nothing is precious
• Step 8: Okay, You can code finally
• Step 9: Beta Test Your App
Principle 9: Test Before you submit
• Step 10: Release
[Source] Stanford CS193P
www.MitAPP.com http://twitter.com/MitAPP
27. Key Points
• Talk to users
• Explore many designs
• Iterate based on user feedback
[Source] Stanford CS193P
www.MitAPP.com http://twitter.com/MitAPP
29. Resources
• Main Apple Dev Site: http://developer.apple.com/iphone/
• Community Forum: http://www.iphonedevsdk.com/
• Tips: http://iphonedevelopertips.com/
• Blog: http://iphoneincubator.com/blog/
• StackOverflow: http://stackoverflow.com/
• Italian Sites: iSpazio, iPhoneItalia, MelaMorsicata, MacLounge, etc...
• ... search “iphone dev” on Google...
• To create video trailers for your app: http://www.vimov.com/isimulate/
www.MitAPP.com http://twitter.com/MitAPP
30. DEMO
• DEMO (30’):
Create an application
www.MitAPP.com http://twitter.com/MitAPP
31. From Upstart to Startup to Grownup
(Jessica Kahn - Tapoulus)
With more than 15 million downloads, “Tap Tap Revenge” is by far the most popular game
on the iPhone and iPod touch.
• Some core principles behind running a succesful
software startup don't change:
- Build a great team
- Strengthen you brand
- Work to become more predictable...
- ...Without killing creativity and energy
- Seek out and listen to advice
[Source] Stanford CS193P
www.MitAPP.com http://twitter.com/MitAPP
32. From Upstart to Startup to Grownup
(Jessica Kahn - Tapoulus)
• Build a Great Team
- Don't be afraid to be very selective
- Passion and integrity are paramount
- Be flexible about job descriptions when
you're small
- As you grow, make sure to diversify
[Source] Stanford CS193P
www.MitAPP.com http://twitter.com/MitAPP
33. From Upstart to Startup to Grownup
(Jessica Kahn - Tapoulus)
• Strengthen Your Brand
- Invest in the aestetics
- Don't compromise "too much" on quality
- Use Twitter,YouTube, and other
community-driven sites
- Piggy-back on Apple's marketing prowess
- Store rankings and ratings matter
[Source] Stanford CS193P
www.MitAPP.com http://twitter.com/MitAPP
34. From Upstart to Startup to Grownup
(Jessica Kahn - Tapoulus)
• Become More Predictable
- Know exactly what needs to go into any given
release
- Track how long it takes you to get that work done
- Get status from your team regularly
- Become a conservative when you're getting ready
to ship
- Code reviews, even if informal
- "Blockers" only
- Ad hoc Distribution for Betas
[Source] Stanford CS193P
www.MitAPP.com http://twitter.com/MitAPP
35. From Upstart to Startup to Grownup
(Jessica Kahn - Tapoulus)
• Encourage Creativity
- 20% time
- "Skunkworks" (from Wikipedia: “widely used in
business, engineering, and technical fields to describe a group within an
organization given a high degree of autonomy andunhampered by
bureaucracy, tasked with working on advanced or secret projects.”)
- Facilitate healty brainstorming
- Stay flexible
[Source] Stanford CS193P
www.MitAPP.com http://twitter.com/MitAPP
36. From Upstart to Startup to Grownup
(Jessica Kahn - Tapoulus)
• Seek Advice
- Listen to your customers
(GetSatisfaction, Twitter)
- Have coffee with your peers
- Pay attention to your current & potential
investor
[Source] Stanford CS193P
www.MitAPP.com http://twitter.com/MitAPP
37. From Upstart to Startup to Grownup
(Jessica Kahn - Tapoulus)
• Successful iPhone Software Development Practices:
What I Learned in School:
- If you struggle with a crazy bug, and you start to suspect the compiler,
you're wrong, it's not the comiler, it's you
What I Learned at Apple:
- Actually, it could well be the compiler.
What I Learned at Tapolous:
- Ok, it's probably not the compiler.
- ...but it sure as heck might be some crazy edge case in what is a
fantastically rich, but extremely fast-moving, and very new, platform.
[Source] Stanford CS193P
www.MitAPP.com http://twitter.com/MitAPP
38. From Upstart to Startup to Grownup
(Jessica Kahn - Tapoulus)
• Blame is Unimportant
- Hone you problem-solving skills
- You can never be too good at gdb
- You can never be too foog at Googling
- You can never know too many people
- Code defensively
- Establish some "best practices"
[Source] Stanford CS193P
www.MitAPP.com http://twitter.com/MitAPP
39. From Upstart to Startup to Grownup
(Jessica Kahn - Tapoulus)
• Best Practices
- Don't be cute; your new teammate will not appreciate
how smart you are nearly as much as you do
- Werror was implemented for a reason
- Step throug new code, and/or write unit tests
- Periodically chech for leaks, smashers, and other
misbehavior
- For Internet-savvy applications, use a sniffer to verify
traffic patterns
[Source] Stanford CS193P
www.MitAPP.com http://twitter.com/MitAPP
40. From Upstart to Startup to Grownup
(Jessica Kahn - Tapoulus)
• Best Practices , iPhone-Specific
- It's just like Mac OS X, right? Wrong.
- Use real devices for testing, regurarly
- Offline and bad Edge connections are
common use cases
[Source] Stanford CS193P
www.MitAPP.com http://twitter.com/MitAPP
41. From Upstart to Startup to Grownup
(Jessica Kahn - Tapoulus)
• Wrapping UP
- The iTunes App Store is a crazy and fun
marketplace
- The iPhone OS is a craty and fun platform
- You can be indie and be a success
- You can build a company and be a succes
[Source] Stanford CS193P
www.MitAPP.com http://twitter.com/MitAPP