Mobile Client
Description
There are multiple possible objectives to a mobile XWiki solution:
- Enhance XWiki's solutions with Mobile Access for XE/XEM
- Provide the foundation for Custom Developed Mobile Specific Applications based on XWiki as the backend
In the first phase we will focus on providing a Mobile Skin provided by a Generic Cross device Mobile App allowing to access and XE/XEM instance.
Features
Features of the mobile applications have been grouped in 3 tier based on user needs and development complexity
Tier 1
Working for latest iOS (iOS6) and Android devices (4.2+)Enhance the XWiki REST API to support quality features in XWiki 4.3.(At least partially in 4.5)Allow to configure which wiki to access, provide a username and passwordAllow to download the Mobile configuration from the wiki itselfBasic UI/Design- XE View:
recent documents,space view,apps view,search, query, users,open web view in Safari,navigation between pages - XEM View:
view list of subwikis, search and query global wiki - Page View:
view page in plain HTML with images,list of attachments,view in Safari,support basic zooming/scrolling (iOS), support basic zooming/scrolling (Android) - Pagination (access more than the initial set of documents)
Nice page list viewSupport additional views provided by the Wiki instanceDetect connection URLs from wiki url
Tier 2
- More devices compatibility
Support advanced configuration provided by the Wiki itself- Invite User
- Basic Notifications (recent documents, configurable in watch list ?)
- Basic Offline Storage
- Bookmarks
- Improved UI/Design
- Advanced Navigation in XWiki AWM Apps
Page View: use external web view- Page View: comments, information, backlinks, etc..
Tier 3
- Advanced Notifications based on Rules, Bookmarks
- Advanced Offline including Bookmarking, Editing
- XWiki Basic Administration UI (install Extensions) ?
Source code
Source code of the XWiki Mobile application is available at:
https://github.com/xwiki-contrib/mobile-standardxwikiclient/
Prototypes
v2 Beta/Alpha release
Development of v2 is using jqMobi and Cordova on iOS (https://github.com/xwiki-contrib/mobile-standardxwikiclient/)
This version has much better performance and reliability. A JS mobile to handle network connections has been developed allowing to queue requests.
You can download the current release from the XWiki Extension Repository.
v1 Prototype
A v1 prototype has been published using JQuery Mobile and Cordova on iOS:
http://www.github.com/xwiki-contrib/mobile-xwikistandardclient/tree/v1
Some screenshots are available here
Design Studies
In order to get out a first version of the XWiki Mobile application with the Tier 1 feature set, we need to make some simple UI/Design proposal to improve the v1 Prototype.
The objective is to try to stay in the limits of what the application and the JQuery Mobile framework can currently do, so the UI needs to be acceptable and valuable to user without needing a lot of work. However, getting a long term view is also interesting analyzing which features would be the most important in a mobile use case (notifications, how should they work, mobile capturing of data). Any good ideas that are simple to implement but bring a lot of value in a mobile use case scenario are welcomed.
The proposals should focus on the following features in priority:
- Home Page listing available Wikis
- Configuration Screen to add a Wiki (URL, username, password, test configuration, advanced configuration)
- XEM Screen for multiple sub wikis (list of sub-wikis + action items maybe merged with latest documents or wiki summary)
- XE Screen (list of action items maybe merged with latest documents or wiki summary)
- Recent Documents
- Search
- Attachment View
In a second phase the following features will be important:
- Navigation into Application documents (mobile livetable)
- Bookmarking of Pages/Spaces and Offline usage
- Social Features (comments, etc..)
The Design proposal has been published on the incubator.
Technical Architecture
There are some technical challenges when it comes to the technology used which could be:
- pure native development
- html5 with native packaging with a JS framework
- JQuery Mobile
- jQmobi
- Sensa Touch
- etc..
Additionally there are architectural challenges:
- How to handle the network queues for maximum performance and reliability as well as login management
- How to achieve performance using local caches and Offline usage
- How to provide a modular architecture allowing to add features through plugins as well as customize the application without a full rewrite
The first prototype uses Cordova with JQuery Mobile and this has shown some performance issue both in the HTML displaying as well as reliability issues when transferring data from the servers.
We will study a bit further the approach of network queues to retrieve data and keep a local cache of them as well as the jQmobi framework which seems to be leaner and have better performance on mobile devices.
We will also look into building a modular approach allowing to activate/deactive screens as well as provide screens that are defined in the Wiki that you access.
iOS and Android Page Browser
In order to support touch scaling of the view of an XWiki page, we are using a native browser to display the XWiki page content when a page is shown in the web application.
This requires a specific implementation for each platform. Here is how it works:
When a button in the top toolbar is clicked, some call might be made to the page browser native component. Also when a link is clicked in the page browser component a callback is made to the Cordova application which decides what to do with it. If you click on an external link the page browser will handle it himself. While data is loaded a message is shown in the bottom left (we could try to replace this in the future by activating our own loading icon already there in the UI)
When you navigate away from the page, the page browser is hidden (not killed) and will be reused the next time a page is shown. It is important to reset the content properly and to resize the page browser.
Mobile Client Screen
Here are some notes about how to develop a screen for the Mobile Client v2. This code is a screen that can be added to the home screen for a wiki and allowing to access a list of projects stored in XWiki Classes. Such a module can be loaded dynamically by the XWiki Mobile application just after login in to the wiki.
Ludovic Dubost


