The iPhone is a very popular gadget and this popularity is not limited to long-time and die-hard Mac fan’s. Enterprises also seem triggered by the iPhone’s slick appeal, if only because an increasing number of employees has the flashy device lying near them on the conference table. (Or the lunch table for that matter).
So what are a company’s options if it want to have it’s own shiny icon at the iPhone home screen? Does the ease of use extend beyond the user-interface? In this guide, doomed to be aged in mere months, I’ll outline the options one has for developing enterprise software for the iPhone.
There are two types of software that can be run on an iPhone:
- Native applications
- Web applications
Both have their specific features that can make them the best solution for a given situation.
Native software is developed in objective C, a superset of the C language that adds object-oriented features. Apple provides Iphone SDK available for download at the iPhone Developer Program. The SDK includes Xcode IDE and an iPhone simulator. The major drawback for anyone not owning a mac is that the SDK is only available for OS X.
To install software on the iPhone it needs to be digitally signed. Therefore purchasing one of the two iPhone Developer Programs is needed:
- **Standard program (US$99)**Offers Ad-Hoc distribution to max. 100 devices and distribution through App Store,
- Enterprise program (US$299) Offers In-house and Ad-Hoc distribution
Applications published through the App Store can be either free or paid software. But software has to be approved by Apple before appearing on the App Store. The acceptance policy of App Store leaves room for debate as can be read in this article.
Concluding that distribution through App Store has it’s drawbacks, the Developer Program seems
preferrable. The Enterprise program still requires an iPhone to be [
physically connected to a desktop running iTunes]4 toinstall the software.
Native applications have access to a lot of iPhone features, such as:
- 3D rendering
- Address book
They can of course connect to online resources. For integration in company networks [VPN solutions are
IBM has released a tutorial on how to use Eclipse to program iPhone applications (registration required)
Installing such software requires jailbreaking the iPhone allowing it to run applications not signed by Apple.
2: Web Apps
Web Apps are basically web based applications like any other. Safari on the iPhone uses the same
engine as Safari on the desktop so it includes the latest web standards, like:
- xHTML 1.0
- CSS 2.1
- DOM Level 2
- XmlHttpRequest (AJAX)
Compared to native applications the features of web apps are limited. Nevertheless URI schemes allow developers to extend the possibilities beyond the browser’s scope. The following URI schemes will launch the corresponding iPhone application:
- mailto: links
- tel: links
- Links to google maps
- Links to youtube
- Links to iTunes
As of iPhone OS 2.1 meta-tags can be used to make web apps run full screen and to disable the taskbar. This way web apps look just like native apps.
Native apps and web apps both have their merits and drawbacks. Some of the most important characteristics are outlined below:
|Access to touchscreen?
|Access to other iPhone hardware?
|Access to other iPhone apps?
|Compatibility extends beyond iPhone
Web apps can be seen as Mash-ups or RIA’s brought to a small screen. If web development knowledge is available within a company it’s relatively easy to get into. One can use iPhone specific features but resources are best spent if one makes sure the web app also runs on other mobile devices and desktops. It is a website after all…
On the other hand, if the application requires use of embedded features, native applications are the way to go. Opting for native application development companies should look into requirements regarding distribution and development platform.
As allready hinted by the possibility of storing web apps on the iPhone and running them fullscreen, there’s a somewhat greyish area between the black and white. Hotels.com is a fine example of a hybrid application that uses the best of both worlds.