View Source

h1. Overview

The iOS Surf Expander (iPhone/iPod/iPad) [ICEmobile-SX|http://itunes.apple.com/ph/app/icemobile-sx/id485908934?mt=8] is a standard [iOS native Application|http://developer.apple.com/devcenter/ios/index.action] available on the App Store. It expands the standard browser with device-specific native features.

h1. ICEmobile-SX

ICEmobile-SX can be invoked in two different ways: via icemobile:// URLs or directly through the UI. The primary use is intended to be the URL "helper" since that allows ICEmobile-SX to expand existing browser capabilities with native device features.

h2. Browser URL Invocation

The most important mechanism for invoking ICEmobile-SX is via an [iOS custom URL scheme|http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072-CH7-SW50]. This allows a URL in the browser to launch ICEmobile-SX with a variety of parameters. The following URL commands are supported:

* icemobile://c=*register*
record the Apple Push Notification Service device identifier and inform ICEfaces that ICEmobile-SX is supported
* icemobile://c=*camera*
capture an image with the camera or the photo album if the camera is not available
* icemobile://c=*camcorder*
capture an image with the video camera or the photo album if the camera is not available
* icemobile://c=*microphone*
capture a sound clip with the microphone
* icemobile://c=*scan*
scan a QR code to text via the [zxing|http://code.google.com/p/zxing/] integration

With the general structure being:

{noformat}
icemobile://c=<URL-encoded command?id=<component ID>>
&r=<URL-encoded return URL>
&JSESSIONID=<session ID>
&u=<URL-encoded upload URL>
{noformat}

Invoking an icemobile:// URL in the browser will cause ICEmobile-SX to be launched with the specified command. Once the user completes the media capture, the data will be sent via an HTTP POST to the upload URL.

h2. Direct UI Invocation

Photos, Videos, Audio Clips, and QR Code text can be uploaded from ICEmobile-SX to a specified URL. The specified URL must be able to accept an HTTP multipart POST containing the media or text value. The mediacast demo includes a Servlet based on Servlet 3.0 that will accept the upload and include it as a "message" in the application pushed to the current users.

h1. Build Environment

Building ICEmobile requires Xcode with a minimum of iOS SDK 4.3.

h2. Source Code

The source code for ICEmobile iOS is found in the directory client/ios/icemobile-sx/ICEmobile-SX.xcodeproj.

h2. Application Deployment

Typically, it should be sufficient to install ICEmobile-SX directly from the App Store. However, if you wish to build a custom version you must follow the standard iOS development process, including code signing. To see how the development process works, take a look at the [iOS Quick Start Tutorial]