Develop+Learning+Content+for+Mobile+Devices

Objective
Provide an overview of the solutions that exist to develop content for the mobile phone.

At home, we have a NexusOne (Android), iPodTouch (iOS) and iPad (iOS). I thought I would share some info about my early experience trying to develop for them.

Web Applications
Online web applications that plays within the browser.

Pros: Likely to play nicely across a range of devices. There may be issues with screen sizes (tablet vs phone form factor) but most devices include a webkit browser. This means that there is less cross-device compatibility issues than on the desktop.

Cons: Require an internet connection to access and run the application. The link doesn't appear in the application menu, which means that it is more difficult to distribute to other persons (unless they bookmark it, they may rapidly forget the URL). Have limited or no access to the device features like Camera, GPS, etc.

Native Applications
Native Applications that are distributed via the device app store.

Pros: Fast and speedy. Get access to all device features (Camera, GPS). Easy to share and distribute thanks to many app stores.

Cons: Different devices tend to use different computer languages and different approaches for native application development. Though solutions exist, it is difficult to target different devices with the same code-base. Require a good familiarity with technology.

Hybrids - Web Apps packaged as Native
Hybrid, web applications that are packaged as native applications.

With many devices, it is possible to create a native app that does little more than display a browser window content on the screen. This is a browser window any kind of navigation bar, only the content shows up. The content that can be displayed can be defined by html documents held at a remote location or html documents packaged with the application. When all html files are packaged with the application, the application can be used offline (without access to an internet connection).

Example: [|Bloom Taxonomy] Android app.

Pros: Make it possible to develop native applications with programming languages like javascript. Make it easier to target different devices with the same code-base. Can be distributed as a native app, through the app store.

Cons: Once installed, a limited knowledge of javascript and html can get you quite far. Installation can however be a bit of a challenge. Because what you develop is effectively a native app, you need to download and install all the SDK and simulators for the device OS.

eBooks
Let's not forget ebooks!

Media Phones
Limited access to the internet, mostly for media exchange (sending pictures to contacts) or media viewing (movies). Interaction via a d-pad (left-right-up-down-select).



Smart Phones
Come pre-loaded with applications, often to do with PIM (personal information management). Interaction via keyboard attached to the device.



eReaders
Kindle and co. Specialized for eBook reading. Can be black and white or color. Can allow the addition of applciations. Interaction via a d-pad or buttons on the side of the device.



Touch Phones
Come with a large choice of applications that you can find and download in an app store. Interaction via touch and gesture on screen. When a keyboard is needed, it is displayed on screen.



Touch Tablets
Similar to touch phones in terms of functionality. Bigger screen size.



**Devices and their Operating Systems**

iOS
iPod Touch, iPhone, iPad

Pros: The most widely adopted devices on the market. Other than the issue of different screen size between iPad and [|iPhone], no fragmentation. There is only one version of the iOS to target. When a new version is introduced, it is rapidly pushed to the device.

Cons: Require an [|annual developer membership] of US$99 per year, per developer. Publishing an app for public use depends on approval by Apple staff and at the best, this takes a few days (count on an absolute minimum of 4). Recommended programming language is Objective-C, which is used only in specialist communities (Apple developers). The iPhone SDK is not supported on Windows, at least not officially. Do not allow you to embed Flash or Java content (Geogebra for instance) in hybrid web apps.

Android
An ever growing range of smartphones and tablets devices.

Pros: Rapidly catching up with Apple in terms of popularity ([|2010 data]). One time registration fee of US$25. No approval of any kind to publish on the app store, which is quasi-instantaneous. Dead easy to develop and debug. Just connect your device to your computer with a USB cable and you can see it running on the device rather than the simulator whenever you click compile (it is not always practical to test touch movements within a simulator that runs on your desktop machine). Some software also provide the ability to debug and profile a program running on the device.

Cons: Fragmentation ([|ZDNET article]). Android devices comes in a range of screen-sizes and OSes, with the OS update process being controlled by the provider rather than the user. When a new version of the OS is released, it is about impossible to predict who many and when your users will start using it. The developer documentation is not really well maintained. They give you examples that were written in 2008 and they simply don't work because of changes in the OS introduced since then. Takes a bit of a journey but with community support, you can get there.

Windows Phone 7
One of the latest arrival on the market.

webOS
Palm Pre

BlackBerry Tablet SDK
PlayBook Tablet

**Getting Started**

If there is no real need for interactivity, consider an ebook. Several desktop or web-based applications give you the opportunity to export your content to an ePub format, accepted on most devices. Pages on OSX, for instance. On her blog, [|iTouch Journey], meganaiemma provides useful orientation posts on how to find, create, convert from other formats, publish ebooks.

You can develop web apps for mobile devices using any environment that would let you publish web content. Wikispaces a powerful wiki environment. You can use it to write web apps. [|Moodle Mobile]. Bear in mind that any flash content won't work on iOS devices (iPhone, iPad). They will on most others (Android, Playbook).

In [|Mobile Programming for Educators], Ruben Puendera gives instructions on how to set up Wordpress to publish Mobile content.

[|GameSalad] Mac app and iOS publishing only, unfortunately, but the best way for any not too technical person to write native apps. Limited functionality. Great for mini-game or multimedia presentation type of apps.

[|PhoneGap] to develop hybrid apps, apps that run html and javascript code within a browser window. Open Source. Can be used to publish across a good range of devices. Good support of device native features.

[|JQuery Mobile] jQuery is a javascript library to simply access and manipulation of the DOM document. jQuery Mobile extends it to provide themes and behaviors for mobile devices.

[|wonderfl], online actionscript programming environment propose a "Convert to Android App" functionality. One click. A demonstration of how to use touch events in actionscript is provided in [|boid for Android]

[|Processing for Android] Open-Source for Mobile Innovation brings together internationally recognized innovators from the open source software community

[|Flash] or Flex (open source, free professional IDE for education) let you publish flash content as native applications. Though Apple has taken the decision to ban plugins (flash or java) from the safari browser running on devices, it is possible to use either technology to develop native applications published on the store. The regulation that prevented native apps to be built with 3d party tools has been lifted in Sept 2010. This is perfectly legal now. It is as easy as they promise.

Consider as well getting help. Best is to look for [|mobile applications] in your local community. If this cannot be arranged, online websites exist where you can submit your project to interested freelancers. This comes for a fee and the result is not always up to your expectations. But, he, that's an alternative that exists. For instance [|rent a coder].

[|AppInventor], for Android devices. Simple to use, drag and drop interface similar to Scratch.

**Inspiration / Examples**

Education apps
iPods, iPhones, andiPads in Education

UI
[|Best Examples Designs for Mobile Web Interfaces]

[|mobile (ui) patterns]

Web Resources

 * [|Building iPhone Apps with HTML, CSS, and JavaScript], a free online book.
 * [|Dive into HTML5], free online book