ICEmobile-Faces 1.0 Release Notes
Feb 13 2012

About This Release
ICEmobile-Faces 1.0 is the first official major release of the ICEfaces-based framework for mobile development. ICEmobile-Faces enables you to build JSF-based web applications that deliver a complete native user experience. Key features include:
- Native look and feel
- HTML5/CSS3 support
- Mobile push with cloud-based notification
- Native device integration for access to capabilities like camera, camcorder and microphone
- "Write-once" cross-platform support for Android, iOS, and Blackberry
- Leverages standard Java EE infrastructure, development tools, and skill sets
Contents
These Release Notes include the following sections:
Downloads
ICEmobile 1.0 is available for download in the following formats:
New Features
This is the first official release, so everything is new.
Components
The ICEmobile component suite provides a comprehensive set of JSF components for developing mobile applications. The components automatically adapt their capabilities and styling to the specific client device they are rendered on. The complete component documentation can be found here.
The components available in this release include:
Layout and Navigation
Input and Selection
Media
Native
Device Containers
ICEmobile device containers provide native integration to device capabilities not available through HTML5. The ICEmobile-Faces native components provide direct access to these capabilities, including:
- Camera
- Camcorder
- Microphone
- QR Code Scanner
Furthermore, the device containers proved native integration to device-specific, cloud-based user notification mechanisms.
Device containers are available for Android, iOS, and Blackberry
 | Two variants of the container are available for iOS: one that conforms to the standard ICEmobile container architecture, which is suitable for enterprise app store publication, and ICEmobile-SX, which is suitable for public app store publication. |
Complete container documentation can be found here.
Framework Enhancements
ICEmobile-Faces is based on the ICEfaces and directly benefits from its features. ICEmobile-faces includes enhancements targeted mobile-specific push features. In particular, it supports Cloud Push which can be used to notify users when they are not actively using the web application.
You can learn more about Cloud Push here.
Tools
- Tools bundles are available for NetBeans and Eclipse. Both bundles are add-ons for their respective ICEfaces 3.0 tools bundle. You can get the tools bundles from the download page.
Supported Platforms
ICEfaces
This release is based on ICEfaces 3.0 Final, and inherits supported JSF runtimes, browsers, and applications servers from that release. See ICEfaces release notes for details.
Device Containers and Mobile Browsers
- Google Android 2.2 or later
- Apple iOS 4 or later
- Blackberry Platform 6.0
Development Tips
Components
- If your application uses camera, microphone, or camcorder and you wish it to work in IE9, add
to the form. For more advanced Ajax use see [Desktop Portability].
- timeZone support on timeSpinner may show values from different timezone for sample apps (tested using MST). Just usE
<f:convertDateTime...timeZone="#{date.timezone}" />
which returns java.util.TimeZone.getDefaultID(); to get default timeZone of server.
- Hardware Acceleration may be required for videoPlayback on Android devices. See the new attribute for video and audio
<mobi:audioPlayer value="#{audioBean.audioResourceData}"
linkLabel="Play"
controls="true" preload="auto"/>
which will render a link for playback
Known Issues
Framework
- Cloud Push idle/active detection is not 100% reliable. Under certain conditions cloud push notifications may be sent to active device containers.
Components
all
- mobi:ajax support. Components which are naming containers (like Carousel) have limited use for mobi:ajax tag due to jsf findComponent method which will only search to the nearest naming container.
- geolocation not supported on blackberry devices in browser api
Demo Applications
Mobile Showcase
- HTML5 input page is ill-behaved on Android tablets when soft keyboard is used. Use of "Next" and "Prev" buttons may not result in proper input field focus, and submit button may not perform as expected. Additionally, scrolling window to show active input field is not occurring. If active input field is not visible, the correct keyboard for that input type may not be shown. This is a result of the composite component used for layout of scrollable panels in this application. Should be replaced with a non-composite component in next release.
Containers
Android
- HTML5 audio and video tags are not well supported prior to Android 2.3. Video and audio playback may not work on devices running Android 2.2 or earlier.
- Rapid button presses in Android container may result in discarded submissions. This can lead to a miss-match in state of flip-switch components between the client and the server.
- Android 3.x tablets support HW acceleration, but there are know issues with it.
- With HW Acceleration turned off, scrolling of the web view may be erratic, causing the page to disappear sporadically.
- With HW Acceleration turned off, embedded HTML5 video tags will play the audio portion only.
- With HW Acceleration turned on, the page may not paint instantaneously when page updates occur. Touching the screen causes the paint to occur correctly.
Blackberry
General issues
- Flash and zoom controls are not yet available on the Camera widget extension.
- Tactile feedback on camera and upload buttons (and various HTML5 elements) in the various camera screens is lacking. This can lead to multiple submission attempts (or none at all).
- On devices with a slide out keyboard, having the keyboard extended automatically puts the device in Portrait mode. The photo component depends on the Device.getOrientation method call to orient the thumbnail to the screen, so the thumbnail may be rotated incorrectly in this situation.
- In a related sense, the video camera widget sized at 640x480 does not show up fullscreen unless it's used in Landscape mode. This is similar to the RIM camera application where the the same aspect ratio is maintained.
- When using the video recorder, the user is asked for the following permission when using the video camera:
This appears to be a common issue on some devices when using APIs related to using the video camera in either recording or playback.
Other uses of an API to reset the backlight timer cause this to occur, but the ICEmobile application does not use this API. If this question is asked repeatedly during normal use, it can be
disabled through the application permissions menu:
Options (wrench) -> Device -> Application Management -> ICEFaces Mobile Container -> Edit Permissions -> Interactions -> Reset Security Timer -> [Allow]
- Dongle can be attached to Blackberry device in "charge only" mode only if attempting to write to the filesystems. Camera and videocamera extensions wont work if user is trying to share filesystem with a desktop client.
- Simulator code is extremely slow and can be temperamental depending on simulator networking performance.
- When a video is displayed in the WebKit browser, it renders a black rectangle that persists after the container (and the browser) navigates to a new page. The user must reload the current page to force the browser clear the rectangle.
*Blackberry OS6 uses zxing version 6, which requires the user taking a photo. The container then applies a series of Java image processing operations on the resulting image. For a successful scan, QRCode must be well lit, and the photo taken from such a place that there is no reflection and the image is focusable (via autofocus). Also it seems that the image must be black/white as experience has showed poor results with green or red images.
- HTML5 Geolocation does not work in Blackberry container or standard Blackberry browser. Specificially, the navigator.geolocation.getCurrentPosition() javascript method appears not to work.
Development issues
- Special care must be taken to execute javascript (including the executeScript(String script) calls) in the ScriptEngine instance fetched from the BrowserField instance when the document loads. The convenience method to execute scripts in the BrowserField instance results in a new ScriptEngine being created which does not have access to the javascript namespace defined by ICEmobile components and Bridge constructs.
Tools
- Some cosmetic issues exist with components in Eclipse design time view.
Support
Open source community support is available at http://www.icesoft.org.
The ICEmobile community forums are available for questions, comments, or general discussions regarding ICEmobile.
