The shorter version of my presentation on "iPhone Development: Web or SDK?" that I presented at eComm 2009. There is a video of this talk at http://fora.tv/2009/03/03/Christopher_Allen_iPhone_Web_Development_or_SDK
6. iPhone in Action:
Web Development or SDK?
There are two ways that you can
program for the iPhone, using web
development tools and using the
SDK
7. iPhone in Action:
Web Development or SDK?
There are two ways that you can
program for the iPhone, using web
development tools and using the
SDK
Web development leverages
internet technologies
8. iPhone in Action:
Web Development or SDK?
There are two ways that you can
program for the iPhone, using web
development tools and using the
SDK
Web development leverages
internet technologies
The iPhone SDK leverage the full
power of the iPhone and years of
Apple’s development experience
10. iPhone in Action:
Web Development or SDK?
The iPhone’s Mobile Safari features:
HTML 4.01 and XHTML 1.0
CSS 2.1 and some CSS 3
Full DOM
Javascript 1.4
XMLHttpRequest
thus support for AJAX
Canvas
PDF & Quicktime
Up to 8 “tabs”
Many custom WebKit functions
11. iPhone in Action:
Web Development or SDK?
Additional Mobile Safari features:
12. turning it into a wackybox class:
-webkit-transform: rotate(30deg) translate(5%,5%);
iPhone in Action:
The result is that your news article appears at an angle, moved somewhat off the
Figure 4.2 shows this change, which you can compare to the nontransformed new
Web Development or SDK?
that appears a few pages back as figure 4.1. This particular transform isn’t that
you want people to read it, but it could be
a nice background for a news site or
something similar. There are many other
Additional Mobile Safarido with transforms,
things that you can features:
Webkit CSS Transforms
such as setting up banners, printing text
at a variety of sizes, and making similar
changes on static web pages. Some will be
gimmicks, but others can have func-
tional benefits.
Before we leave transforms behind,
we’ll note that they support one other
property, –webkit-transform-origin,
which can be used to move the origin for
scales and skews away from the center of
the object.
Although you can do quite a bit with
transforms all on their own, their real
power appears when you start working
13. Discussions on this topic are scattered across the internet, alongside individuals’
solutions for them. At the time of writing, none of the library solutions were compre-
hensive enough for us to recommend them here, but take a look around if you need
text in your Canvas object and you don’t want to write the routines yourself.
iPhone in Action:
With that disappointment behind us, we’re going to finish our look at Canvas by
seeing how to put it all together.
6.8 Putting it together
Web Development or SDK?
Having shown lots of stand-alone Canvas methods, we’ll now show how a variety of
shapes can be painted onto a single Canvas object. Figure 6.9 includes a pair of
screenshots that show off most of the Canvas functionality that we’ve discussed.
Additional Mobile Safari features:
Webkit CSS Transforms
Canvas - Scalable Vector Graphics
Figure 6.9 Canvas allows for a wide variety of shapes to be created from a small set of primitives, as
14. iPhone in Action:
Web Development or SDK? 69
Recognizing touches and gestures
The results are shown in figure 4.4, which as you
can Additional Mobile Safari the WebKit CSS ele-
see make good use of some of features:
ments that we highlighted earlier, showing off the great
Webkit CSS Transforms
functionality that the WebKit provides you with.
The JavaScript Scalable Vector Graphics
Canvas - database is the last WebKit element
that you can make use of on SQLite Storagecan also
Database - Local the iPhone, but it
be used more broadly. The last couple of items that
we’ll discuss are instead iPhone specific.
Adjusting the chrome
In the previous chapter we showed you some simple
methods for dealing with the iPhone chrome. We
explained how to scroll the URL bar and noted that the
status bar and the bottom bar could not be changed.
Using the WebKit, you have slightly more control over
things, provided that your user is using iPhone OS 2.1
or higher. All you need to do is enter a new metatag on
15. iPhone in Action:
Web Development or SDK?
touchStart
Additional Mobile Safari features:
touchMove
Webkit CSS Transforms
touchEnd
Canvas - Scalable Vector Graphics touchCancel
Database - Local SQLite Storage gestureStart
Touch Events gestureChange
gestureEnd
changedTouches
targetTouches
touches
orientation
rotation
scale
16. iPhone in Action:
Web Development or SDK? 69
Recognizing touches and gestures
The results are shown in figure 4.4, which as you
can Additional Mobile Safari the WebKit CSS ele-
see make good use of some of features:
ments that we highlighted earlier, showing off the great
Webkit CSS Transforms
functionality that the WebKit provides you with.
The JavaScript Scalable Vector Graphics
Canvas - database is the last WebKit element
that you can make use of on SQLite Storagecan also
Database - Local the iPhone, but it
be used more broadly. The last couple of items that
Touch Events
we’ll discuss are instead iPhone specific.
Hide Mobile Safari’s Chrome
Adjusting the chrome
In the previous chapter we showed you some simple
methods for dealing with the iPhone chrome. We
explained how to scroll the URL bar and noted that the
status bar and the bottom bar could not be changed.
Using the WebKit, you have slightly more control over
things, provided that your user is using iPhone OS 2.1
or higher. All you need to do is enter a new metatag on
17. iPhone in Action:
Web Development or SDK?
The iPhone SDK features:
Same Mach kernel and Core OS as
Macintosh
18. iPhone in Action:
Web Development or SDK?
The iPhone SDK features:
Same Mach kernel and Core OS as
Macintosh
Most of the same Core Services as
Macintosh
19. iPhone in Action:
Web Development or SDK?
The iPhone SDK features:
Same Mach kernel and Core OS as
Macintosh
Most of the same Core Services as
Macintosh
Most of functionality available to
Apple’s iPhone apps
20. iPhone in Action:
Web Development or SDK?
The iPhone SDK features:
Same Mach kernel and Core OS as
Macintosh
Most of the same Core Services as
Macintosh
Most of functionality available to
Apple’s iPhone apps
Cocoa Touch with UIKit
21. iPhone in Action:
Web Development or SDK?
The iPhone SDK features:
Same Mach kernel and Core OS as
Macintosh
Most of the same Core Services as
Macintosh
Most of functionality available to
Apple’s iPhone apps
Cocoa Touch with UIKit
Objective C and C++ compiler
22. iPhone in Action:
Web Development or SDK?
The iPhone SDK features:
Same Mach kernel and Core OS as
Macintosh
Most of the same Core Services as
Macintosh
Most of functionality available to
Apple’s iPhone apps
Cocoa Touch with UIKit
Objective C and C++ compiler
Interface Builder with UIKit
templates
23. iPhone in Action:
Web Development or SDK?
The iPhone SDK features:
Same Mach kernel and Core OS as
Macintosh
Most of the same Core Services as
Macintosh
Most of functionality available to
Apple’s iPhone apps
Cocoa Touch with UIKit
Objective C and C++ compiler
Interface Builder with UIKit
templates
Great debugging and profiling
28. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Easier then using low-level C
29. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Easier then using low-level C
Languages are dynamic
30. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Easier then using low-level C
Languages are dynamic
No memory management
31. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Easier then using low-level C
Languages are dynamic
No memory management
Display of data is easy
32. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Easier then using low-level C
Languages are dynamic
No memory management
Display of data is easy
Deployment is an upload
33. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Easier then using low-level C
Languages are dynamic
No memory management
Display of data is easy
Deployment is an upload
Easy to use
34. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Dynamism
35. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Dynamism
Update functionality anytime
36. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Dynamism
Update functionality anytime
Easy to fix bugs
37. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Dynamism
Update functionality anytime
Easy to fix bugs
Give users the latest data
38. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Dynamism
Globalized
39. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Dynamism
Globalized
Part of global network
40. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Dynamism
Globalized
Part of global network
One program for iPhone and
desktop
41. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Dynamism
Globalized
Part of global network
One program for iPhone and
desktop
Access to rest of web
42. iPhone in Action:
Web Development or SDK?
Web Development Advantages
Simplicity
Dynamism
Globalized
Part of global network
One program for iPhone and
desktop
Access to rest of web
Connected to everyone
43. iPhone in
Action:
Web
Development
or SDK?
Multiple Platforms
45. iPhone in Action:
Web Development or SDK?
SDK Development Advantages
Sophistication
Great depth of functionality
46. iPhone in Action:
Web Development or SDK?
SDK Development Advantages
Sophistication
Great depth of functionality
Superior development
environment
47. iPhone in Action:
Web Development or SDK?
SDK Development Advantages
Sophistication
Great depth of functionality
Superior development
environment
Deeper access to internals
48. iPhone in Action:
Web Development or SDK?
SDK Development Advantages
Sophistication
Great depth of functionality
Superior development
environment
Deeper access to internals
Camera, accelerometers, GPS,
gestures, contacts, photos
49. iPhone in Action:
Web Development or SDK?
SDK Development Advantages
Sophistication
Great depth of functionality
Superior development
environment
Deeper access to internals
Camera, accelerometers, GPS,
gestures, contacts, photos
Better graphics and 3D
50. iPhone in Action:
Web Development or SDK?
SDK Development Advantages
Sophistication
Accessibility
51. iPhone in Action:
Web Development or SDK?
SDK Development Advantages
Sophistication
Accessibility
Always available
52. iPhone in Action:
Web Development or SDK?
SDK Development Advantages
Sophistication
Accessibility
Always available
Functions without net
53. iPhone in Action:
Web Development or SDK?
SDK Development Advantages
Sophistication
Accessibility
Always available
Functions without net
Cache data
54. iPhone in Action:
Web Development or SDK?
SDK Development Advantages
Sophistication
Accessibility
Always available
Functions without net
Cache data
Native speed
55. iPhone in Action:
Web Development or SDK?
SDK Development Advantages
Sophistication
Accessibility
Always available
Functions without net
Cache data
Native speed
Private
56. iPhone in Action:
Web Development or SDK?
SDK Development Advantages
Sophistication
Accessibility
Monetization
57. iPhone in Action:
Web Development or SDK?
SDK Development Advantages
Sophistication
Accessibility
Monetization
Easy to sell through App Store
58. iPhone in Action:
Web Development or SDK?
SDK Development Advantages
Sophistication
Accessibility
Monetization
Easy to sell through App Store
Does not depend on
advertisements or subscriptions
60. iPhone in Action:
Web Development or SDK?
Both development approaches have
their advantages.
61. iPhone in Action:
Web Development or SDK?
Both development approaches have
their advantages.
You want to take advantage of each
programming methods strengths and
use it when appropriate.
62. iPhone in Action:
Web Development or SDK?
Both development approaches have
their advantages.
You want to take advantage of each
programming methods strengths and
use it when appropriate.
Don’t blindly just use the SDK or the
Web because you're more
comfortable with it.
64. iPhone in Action:
Web Development or SDK?
There are options to combine both
approaches and thus play to their
strengths
65. iPhone in Action:
Web Development or SDK?
There are options to combine both
approaches and thus play to their
strengths
Mirrored Development
66. iPhone in Action:
Web Development or SDK?
There are options to combine both
approaches and thus play to their
strengths
Mirrored Development
Mixed Development
67. iPhone in Action:
Web Development or SDK?
There are options to combine both
approaches and thus play to their
strengths
Mirrored Development
Mixed Development
Client-Server Development
68. iPhone in Action:
Web Development or SDK?
There are options to combine both
approaches and thus play to their
strengths
Mirrored Development
Mixed Development
Client-Server Development
Hybrid Development
79. iPhone in Action:
Web Development or SDK?
Hybrid Development
Use PhoneGap plus native-looking
iPhone Javascript libraries
Result is app that can be submitted
to iPhone AppStore
You can now charge for your
webapp
Cross-Platform for Android,
Blackberry, more to come
http://phonegap.com/
80. iPhone in
Action:
Web
Development
or SDK?
Hybrid Development
Inside Trader & It’s On My iPhone
83. iPhone in Action:
Web Development or SDK?
iPhone In Action:
Introduction to Web & SDK Development
manning.com/iphoneinaction
84. iPhone in Action:
Web Development or SDK?
iPhone In Action:
Introduction to Web & SDK Development
manning.com/iphoneinaction
Oriented for web developers
85. iPhone in Action:
Web Development or SDK?
iPhone In Action:
Introduction to Web & SDK Development
manning.com/iphoneinaction
Oriented for web developers
Topics:
Creating web apps optimized for the
iPhone with Canvas, WebKit, and iUI
86. iPhone in Action:
Web Development or SDK?
iPhone In Action:
Introduction to Web & SDK Development
manning.com/iphoneinaction
Oriented for web developers
Topics:
Creating web apps optimized for the
iPhone with Canvas, WebKit, and iUI
Learning about the iPhone native SDK
87. iPhone in Action:
Web Development or SDK?
iPhone In Action:
Introduction to Web & SDK Development
manning.com/iphoneinaction
Oriented for web developers
Topics:
Creating web apps optimized for the
iPhone with Canvas, WebKit, and iUI
Learning about the iPhone native SDK
Programming with Cocoa Touch's UIKit
88. iPhone in Action:
Web Development or SDK?
iPhone In Action:
Introduction to Web & SDK Development
manning.com/iphoneinaction
Oriented for web developers
Topics:
Creating web apps optimized for the
iPhone with Canvas, WebKit, and iUI
Learning about the iPhone native SDK
Programming with Cocoa Touch's UIKit
Building apps that delve into the iPhone's
toolbox
89. iPhone in Action:
Web Development or SDK?
iPhone In Action:
Introduction to Web & SDK Development
manning.com/iphoneinaction
Oriented for web developers
Topics:
Creating web apps optimized for the
iPhone with Canvas, WebKit, and iUI
Learning about the iPhone native SDK
Programming with Cocoa Touch's UIKit
Building apps that delve into the iPhone's
toolbox
Blending web & iPhone SDK development
90. iPhone in Action:
Web Development or SDK?
iPhone In Action:
Introduction to Web & SDK Development
manning.com/iphoneinaction
Oriented for web developers
Topics:
Creating web apps optimized for the
iPhone with Canvas, WebKit, and iUI
Learning about the iPhone native SDK
Programming with Cocoa Touch's UIKit
Building apps that delve into the iPhone's
toolbox
Blending web & iPhone SDK development
Available Now in Print & PDF
91. iPhone in Action:
Web Development or SDK?
iPhone In Action:
Introduction to Web & SDK Development
manning.com/iphoneinaction
Oriented for web developers
Topics:
Creating web apps optimized for the
iPhone with Canvas, WebKit, and iUI
Learning about the iPhone native SDK
Programming with Cocoa Touch's UIKit
Building apps that delve into the iPhone's
toolbox
Blending web & iPhone SDK development
Available Now in Print & PDF
Updates and Blog at
iphoneinaction.manning.com
92. iPhone in
Action:
Web
Development
or SDK?
iPhoneWebDev
iPhoneWebDev.com
95. iPhone in Action:
Web Development or SDK?
iUI Framework
iui.googlecode.com
Navigation windows from JSON
objects
96. iPhone in Action:
Web Development or SDK?
iUI Framework
iui.googlecode.com
Navigation windows from JSON
objects
Navigational objects using canvas UI
tags for speed
97. iPhone in Action:
Web Development or SDK?
iUI Framework
iui.googlecode.com
Navigation windows from JSON
objects
Navigational objects using canvas UI
tags for speed
Handles phone rotation events
98. iPhone in Action:
Web Development or SDK?
iUI Framework
iui.googlecode.com
Navigation windows from JSON
objects
Navigational objects using canvas UI
tags for speed
Handles phone rotation events
Supports XmlHttpRequest
99. iPhone in Action:
Web Development or SDK?
iUI Framework
iui.googlecode.com
Navigation windows from JSON
objects
Navigational objects using canvas UI
tags for speed
Handles phone rotation events
Supports XmlHttpRequest
A great iPhone user experience
100. iPhone in Action:
Web Development or SDK?
iUI Framework
iui.googlecode.com
Navigation windows from JSON
objects
Navigational objects using canvas UI
tags for speed
Handles phone rotation events
Supports XmlHttpRequest
A great iPhone user experience
1.8KB with gzip and Dojo shrinksafe
101. iPhone in Action:
Web Development or SDK?
iUI Framework
iui.googlecode.com
Navigation windows from JSON
objects
Navigational objects using canvas UI
tags for speed
Handles phone rotation events
Supports XmlHttpRequest
A great iPhone user experience
1.8KB with gzip and Dojo shrinksafe
Moviesapp.com written in 5 hours...
102. iPhone in
Action:
Web
Development
or SDK?
moviesapp.com using iUI
103. iPhone in
Action:
Web
Development
or SDK?
SQLite Safari
tinyurl.com/sqlitesafari
104. iPhone in
Action:
Web
Development
or SDK?
DashCode
105. iPhone in
Action:
Web
Development
or SDK?
Dashcode Development
106. iPhone in
Action:
Web
Development
or SDK?
PhoneGap
phonegap.com
107. iPhone in
Action:
Web
Development
or SDK?
TouchCode (json,xml,rss,...)
touchcode.googlecode.com
Welcome. My name is Christopher Allen, and I am a long time blogger on Life With Alacrity, I am host of the larger iPhone Web Developer community iPhoneWebDev, and co-founder and master of ceremonies of the iPhoneDevCamp hackathon.
I am also the co-author of iPhone in Action: Introduction to Web and SDK Development, being released by Manning Publications at manning.com/callen
Today many of you are asking the question, “Do I develop for the iPhone using the Web, or create a native application using the SDK”?
Developing on the web leverages all the internet technologies...
...but using the SDK leverages the full power of the iPhone and years of Apple’s development experience.
I’m sure that you are already familiar with the list of features in iPhone’s Mobile Safari: All the things you need to create a sophisticated desktop class AJAX web application.
However, you may not be aware of some of these additional Mobile Safari features:
Webkit specific CSS transforms, with additional border types, rounded boxes, scaling, rotation, and other transformations...
Canvas, a scalable vector graphics toolkit that allow for simple SVG-style graphics and animations...
Support of HTML 5’s client-side database that allows for local SQLite storage...
iPhone specific JavaScript events, such as touchStart, gestureChange, current orientation, etc.
Finally, you have the ability to hide Mobile Safari’s chrome, allowing you utilize the full size of the iPhone screen.
The iPhone SDK offers a number of features: the same Mach kernel and Core operating system that has been used by Apple since OS X was released in 2001...
...most of the same Core Services as the Macintosh....
Much of the functionality offered by Apple’s own iPhone apps
including the object oriented CocoaTouch and UIKit
the ability to create applications using Objective C or C++
...and great tools like Interface Builder...
...and all the debugging and profiling tools that have been available to Macintosh application developers for years.
So what are the advantages of developing for the iPhone on the Web?
All the same advantages that Steve Jobs spoke of in 2007 on the release of the iPhone.
First off, Simplicity.
Frankly, web development is simpler than using a low-level programming language like C.
The programming languages of the web are dynamic, which offer a lot of advantages.
You don’t usually have to worry about things like memory management or even (for the most part) object modeling.
If you’re just outputting plain data, the ease factor in web development goes up by a factor of at least 10x when compared to doing the same thing using the SDK’s tables and other data outputs.
Beyond that, when you’re done developing a web program, all you need to do is upload your pages to your server. There are no hoops to jump through (other than those that your individual company might impose).
It’s also a lot simpler for users who are used to working with the web. They’re much more likely to view your web page than to pay to purchase your SDK program from the iTunes store, and thus it’s a great way to attract many more users.
The next advantage is Dynamism.
You can literally update your program at any time. You don’t have to worry about when or how your users will get a new program.
You just change your server’s source code, and the next time your users access the page, they’ll see all your bug fixes and other changes. Similarly, you can constantly give users access to your newest data. Whereas data stored within an SDK program is static, for a web program a user’s view of data changes whenever you update it. This starts to shade into the next strength …
Similarly, you can constantly give users access to your newest data. Whereas data stored within an SDK program is static, for a web program a user’s view of data changes whenever you update it. This starts to shade into the next strength …
The third advantage is that web-based apps are Globalized.
When you create a web-based iPhone program, you become part of a global network that starts at your own server. This has a bunch of advantages.
First, it means you can just create one program for use by both iPhone and desktop users. This will improve usability for your users if there’s data that they want to access (or even update) from both their desktop and their iPhone.
Third, it gives you rapid access to the rest of the Web through XML, URLs, RSS feeds, and other data links. Granted, these advantages could be mimicked using web access from the SDK.
It’s also a lot easier for your users to interact with other users, which might be particularly important for chats or multiplayer games.
Finally, there are now a number of additional platforms for web-based mobile apps: All the Google Android phones including the T-Mobile G1, the Nokia S60 and S90 series phones, and announced last week, the Palm Pre. All of these use Webkit, the same mobile browser used by the iPhone.
So what are the advantages of using the SDK? Sophistication.
Just as web programs are a lot easier to develop and deploy, the flipside is that SDK programs allow for improved depth of functionality.
The SDK development environment is a wonder of error reporting, complemented by well-integrated documentation and a built-in profiling package.
In addition, this depth shows up in the frameworks that you’ll have access to when you use the SDK. They’ll give you much deeper access to the iPhone’s internals than any web page could.
Though Apple has made some unique events, like orientation change, and some gestures available to web developments through the WebKit, if you want to use the address book or GPS or want to take a deeper look at the accelerometers, you have to use the SDK.
You can also access better graphics with the SDK — particularly if you want to work with animation or games.
Another SDK advantage is Accessibility.
Once a user buys a program, it is always available on his iPhone. Though a similar function is available for saving web applications into Safari bookmarks, it’s likely only a percentage of users will take advantage of it.
An SDK program is usable wherever a user is, whether that be inside a subway tunnel or in a cell-phone dead zone. Though the iPhone has an always-on internet, there are inevitably times and places when it’s not available—but a native program will be.
Even an occasionally-connected application might benefit from being native to the iPhone, as they can provide constant access to older cached data.
This goes hand-in-hand with the fact that the applications will always be running at iPhone speed, not constrained by the internet.
Because the program is sitting on his iPhone, your user might feel more comfortable about using it to save his personal records than he would be if he knew the data was going out to the internet, and thus potentially vulnerable.
For many of you, a big advantage of the SDK is Monetization.
Though I don’t want to be entirely mercenary, I think it’s important to note that Apple is making it very easy to sell your iPhone SDK programs through their iPhone store.
Certainly you could depend upon advertisements or even subscriptions for a web developed program, but you don’t have to worry about any of that if you write a program using the SDK.
Both development approaches have their advantages. •You want to take advantage of each programming methods strengths and use it when appropriate. •Don’t blindly just use the SDK or the Web because you're more comfortable with it.
Both development approaches have their advantages. •You want to take advantage of each programming methods strengths and use it when appropriate. •Don’t blindly just use the SDK or the Web because you're more comfortable with it.
Both development approaches have their advantages. •You want to take advantage of each programming methods strengths and use it when appropriate. •Don’t blindly just use the SDK or the Web because you're more comfortable with it.
I’d also like to talk with you about options you have to combine both approaches and thus play to their strengths. They are • Mirrored Development, •Mixed Development and •Client-Server Development.
I’d also like to talk with you about options you have to combine both approaches and thus play to their strengths. They are • Mirrored Development, •Mixed Development and •Client-Server Development.
I’d also like to talk with you about options you have to combine both approaches and thus play to their strengths. They are • Mirrored Development, •Mixed Development and •Client-Server Development.
I’d also like to talk with you about options you have to combine both approaches and thus play to their strengths. They are • Mirrored Development, •Mixed Development and •Client-Server Development.
I’d also like to talk with you about options you have to combine both approaches and thus play to their strengths. They are • Mirrored Development, •Mixed Development and •Client-Server Development.
It’s obviously easier to get a user to try out a free but limited version of your software than it is to get them to purchase a more complete version. The business model of upgrading users from free to premium versions of software has been used extensively, with “freemium” being the latest buzzword. There are two ways you could create a freemium model for your software.
First, you could do what a lot of developers are already doing and offer a free trial version of your software on the iPhone store. This has the advantage of putting the software in the place that people are looking for software, but has the disadvantage that your application could get lost amidst the hurly burly of the store. Second, you could create a version of your software for the web, using Web App technologies. I think this model is particularly useful for those of you that have existing web pages that might already be drawing users to them in more highly targeted ways than the Apps Store could. Thus after releasing a limited version of your application over the web using techniques like the WebKit, iUI, and Canvas, you also release a feature-complete version of your application through the Apps Store using the SDK. Though we’ve highlighted the economic reasons for this sort of mirrored development, it’s possible that web sites might decide to extend existing Web Apps to include features not available in their web-based application. If so then you’ll have a clear delineation between what the programs include: the SDK will uniquely include those features that weren’t available through the web, like location-aware and orientation-aware data.
It’s obviously easier to get a user to try out a free but limited version of your software than it is to get them to purchase a more complete version. The business model of upgrading users from free to premium versions of software has been used extensively, with “freemium” being the latest buzzword. There are two ways you could create a freemium model for your software.
First, you could do what a lot of developers are already doing and offer a free trial version of your software on the iPhone store. This has the advantage of putting the software in the place that people are looking for software, but has the disadvantage that your application could get lost amidst the hurly burly of the store. Second, you could create a version of your software for the web, using Web App technologies. I think this model is particularly useful for those of you that have existing web pages that might already be drawing users to them in more highly targeted ways than the Apps Store could. Thus after releasing a limited version of your application over the web using techniques like the WebKit, iUI, and Canvas, you also release a feature-complete version of your application through the Apps Store using the SDK. Though we’ve highlighted the economic reasons for this sort of mirrored development, it’s possible that web sites might decide to extend existing Web Apps to include features not available in their web-based application. If so then you’ll have a clear delineation between what the programs include: the SDK will uniquely include those features that weren’t available through the web, like location-aware and orientation-aware data.
In a mixed development environment, instead of making the web a subset of your SDK work, you’re looking at an overall project and deciding to program some of it using the web and some of it using the SDK. This can be a chaotic methodology if not managed carefully, but it gives you the best opportunity to really use the strengths of each sort of development. I find it most likely to work when you have two classes of users or two classes of programmers. On the user side, a good example might be a situation where you have administrative users and end users. Assume you’re managing some data project. The data input methods used by your administrators don’t necessarily have to look great. You can develop them very quickly using the web and then your administrators can choose whether to input data from their iPhones or from their desktops. Conversely, you want to provide a great user experience for your end-users, so you take advantage of the iPhone’s native graphical and animation features to output your data in interesting ways. On the programmer side, you might simply have developers who are more comfortable in either the web or Objective-C arena. A mixed development project allows you to not only use the strengths of the individual programming methods but also the strengths of your individual programmers as well. The exact way in which you do mixed development will very much depend upon the specifics of your project, but there should be real opportunities to take advantage of each programming style’s strengths without much redundancy.
In a mixed development environment, instead of making the web a subset of your SDK work, you’re looking at an overall project and deciding to program some of it using the web and some of it using the SDK. This can be a chaotic methodology if not managed carefully, but it gives you the best opportunity to really use the strengths of each sort of development. I find it most likely to work when you have two classes of users or two classes of programmers. On the user side, a good example might be a situation where you have administrative users and end users. Assume you’re managing some data project. The data input methods used by your administrators don’t necessarily have to look great. You can develop them very quickly using the web and then your administrators can choose whether to input data from their iPhones or from their desktops. Conversely, you want to provide a great user experience for your end-users, so you take advantage of the iPhone’s native graphical and animation features to output your data in interesting ways. On the programmer side, you might simply have developers who are more comfortable in either the web or Objective-C arena. A mixed development project allows you to not only use the strengths of the individual programming methods but also the strengths of your individual programmers as well. The exact way in which you do mixed development will very much depend upon the specifics of your project, but there should be real opportunities to take advantage of each programming style’s strengths without much redundancy.
The final type of integrated iPhone development is the most powerful—and also one that’s already in use on your iPhone, whether you know it or not. Client-server development combines back-end web development and front-end SDK development in a fairly typical client-server model. This is effectively what is done by existing iPhone programs such as Maps, Stocks, and YouTube, all of which pull data from the internet and display it in attractive ways while also taking advantage of the iPhone’s unique capabilities. On the one hand, you don’t need a lot of the details of web development as presented in this book to create a data back-end. Instead you can depend on your existing Perl, PHP, or Ruby on Rails code and use it to kick out RSS or some other data feed which your SDK software can easily pick up. On the other hand, if you’re already doing that much development on the web side of things, creating a second web-based interface for iPhone users should be trivial. Thus, a client-server development environment can give you the excuse to use either of the other integrated development strategies that I suggested.
The final type of integrated iPhone development is the most powerful—and also one that’s already in use on your iPhone, whether you know it or not. Client-server development combines back-end web development and front-end SDK development in a fairly typical client-server model. This is effectively what is done by existing iPhone programs such as Maps, Stocks, and YouTube, all of which pull data from the internet and display it in attractive ways while also taking advantage of the iPhone’s unique capabilities. On the one hand, you don’t need a lot of the details of web development as presented in this book to create a data back-end. Instead you can depend on your existing Perl, PHP, or Ruby on Rails code and use it to kick out RSS or some other data feed which your SDK software can easily pick up. On the other hand, if you’re already doing that much development on the web side of things, creating a second web-based interface for iPhone users should be trivial. Thus, a client-server development environment can give you the excuse to use either of the other integrated development strategies that I suggested.
An of course, I encourage you to take a look at my book, iPhone in Action, at manning.com/callen -- it was written specifically for web developers who wish to better understand both web development for the iPhone as well as how to create simple iPhone SDK applications. An advance edition PDF is available now from the website, and the printed book should be out by early January.
An of course, I encourage you to take a look at my book, iPhone in Action, at manning.com/callen -- it was written specifically for web developers who wish to better understand both web development for the iPhone as well as how to create simple iPhone SDK applications. An advance edition PDF is available now from the website, and the printed book should be out by early January.
An of course, I encourage you to take a look at my book, iPhone in Action, at manning.com/callen -- it was written specifically for web developers who wish to better understand both web development for the iPhone as well as how to create simple iPhone SDK applications. An advance edition PDF is available now from the website, and the printed book should be out by early January.
An of course, I encourage you to take a look at my book, iPhone in Action, at manning.com/callen -- it was written specifically for web developers who wish to better understand both web development for the iPhone as well as how to create simple iPhone SDK applications. An advance edition PDF is available now from the website, and the printed book should be out by early January.
An of course, I encourage you to take a look at my book, iPhone in Action, at manning.com/callen -- it was written specifically for web developers who wish to better understand both web development for the iPhone as well as how to create simple iPhone SDK applications. An advance edition PDF is available now from the website, and the printed book should be out by early January.
An of course, I encourage you to take a look at my book, iPhone in Action, at manning.com/callen -- it was written specifically for web developers who wish to better understand both web development for the iPhone as well as how to create simple iPhone SDK applications. An advance edition PDF is available now from the website, and the printed book should be out by early January.
An of course, I encourage you to take a look at my book, iPhone in Action, at manning.com/callen -- it was written specifically for web developers who wish to better understand both web development for the iPhone as well as how to create simple iPhone SDK applications. An advance edition PDF is available now from the website, and the printed book should be out by early January.
An of course, I encourage you to take a look at my book, iPhone in Action, at manning.com/callen -- it was written specifically for web developers who wish to better understand both web development for the iPhone as well as how to create simple iPhone SDK applications. An advance edition PDF is available now from the website, and the printed book should be out by early January.
An of course, I encourage you to take a look at my book, iPhone in Action, at manning.com/callen -- it was written specifically for web developers who wish to better understand both web development for the iPhone as well as how to create simple iPhone SDK applications. An advance edition PDF is available now from the website, and the printed book should be out by early January.
An of course, I encourage you to take a look at my book, iPhone in Action, at manning.com/callen -- it was written specifically for web developers who wish to better understand both web development for the iPhone as well as how to create simple iPhone SDK applications. An advance edition PDF is available now from the website, and the printed book should be out by early January.
An of course, I encourage you to take a look at my book, iPhone in Action, at manning.com/callen -- it was written specifically for web developers who wish to better understand both web development for the iPhone as well as how to create simple iPhone SDK applications. An advance edition PDF is available now from the website, and the printed book should be out by early January.
If you are developing iPhone web apps or iPhone optimized websites, the iPhoneWebDev developer community is the largest community of web developers helping other web developers. It is great place for solving problems.
A great place to start in creating an iPhone webapp is by using the iUI javascript library, at iui.googlecode.com. It allows you to quickly create a powerful iPhone web app experience for your users. The author of Moviesapp.com said that he was able to release his iPhone movie website in less then 5 hours to win an award at last years iPhoneDevCamp.
A great place to start in creating an iPhone webapp is by using the iUI javascript library, at iui.googlecode.com. It allows you to quickly create a powerful iPhone web app experience for your users. The author of Moviesapp.com said that he was able to release his iPhone movie website in less then 5 hours to win an award at last years iPhoneDevCamp.
A great place to start in creating an iPhone webapp is by using the iUI javascript library, at iui.googlecode.com. It allows you to quickly create a powerful iPhone web app experience for your users. The author of Moviesapp.com said that he was able to release his iPhone movie website in less then 5 hours to win an award at last years iPhoneDevCamp.
A great place to start in creating an iPhone webapp is by using the iUI javascript library, at iui.googlecode.com. It allows you to quickly create a powerful iPhone web app experience for your users. The author of Moviesapp.com said that he was able to release his iPhone movie website in less then 5 hours to win an award at last years iPhoneDevCamp.
A great place to start in creating an iPhone webapp is by using the iUI javascript library, at iui.googlecode.com. It allows you to quickly create a powerful iPhone web app experience for your users. The author of Moviesapp.com said that he was able to release his iPhone movie website in less then 5 hours to win an award at last years iPhoneDevCamp.
A great place to start in creating an iPhone webapp is by using the iUI javascript library, at iui.googlecode.com. It allows you to quickly create a powerful iPhone web app experience for your users. The author of Moviesapp.com said that he was able to release his iPhone movie website in less then 5 hours to win an award at last years iPhoneDevCamp.
A great place to start in creating an iPhone webapp is by using the iUI javascript library, at iui.googlecode.com. It allows you to quickly create a powerful iPhone web app experience for your users. The author of Moviesapp.com said that he was able to release his iPhone movie website in less then 5 hours to win an award at last years iPhoneDevCamp.
A great place to start in creating an iPhone webapp is by using the iUI javascript library, at iui.googlecode.com. It allows you to quickly create a powerful iPhone web app experience for your users. The author of Moviesapp.com said that he was able to release his iPhone movie website in less then 5 hours to win an award at last years iPhoneDevCamp.
A great place to start in creating an iPhone webapp is by using the iUI javascript library, at iui.googlecode.com. It allows you to quickly create a powerful iPhone web app experience for your users. The author of Moviesapp.com said that he was able to release his iPhone movie website in less then 5 hours to win an award at last years iPhoneDevCamp.
This website detail’s the new HTML 5 client-side storage features of Mobile Safari.
One under promoted web development resource is Apple’s Dashcode, which is included with the iPhone SDK.
It allows you to create websites using templates similar to the SDK’s Interface Builder.
TouchCode is a resource for SDK developers wishing to have more compatibility with web protocols. The TouchCode open source project at touchcode.googlecode.com offers Objective-C libraries for reading and writing json, xml, rss, etc.