Planning to install IBM MobileFirst

Determine the services and function of your hybrid application before you install MobileFirst®. You must install a MobileFirst server in some instances.

Running a hybrid application in a portal page

When your hybrid application runs with your HCL pages rendered in a native application, HCL loads the appropriate native resources for the device. These resources are loaded automatically through modules that are provided in HCL. It starts with the wp_worklight_ext module, which is listed in some of the default profiles, including profile_deferred.json, profile_dojo_deferred.json, and profile_basic_content.json.

If you want access to the appropriate native resources for the device on a particular page of your HCL, use a profile that includes the wp_worklight_ext module. The default profile, profile_deferred.json, includes wp_worklight_ext, so the appropriate native resources are available to your HCL pages by default.

wp_worklight is a version-independent meta-module that is defined by the mobilefirst70.json file in your theme's contributions folder. This module is a prerequisite of the default MobileFirst resources that enable access to native features. It also includes the overrides that enhance performance and allow the API libraries to work within the module framework.

The version-dependent platform modules that are included by the module framework are mf_ios_70 and mf_android_70. These platform modules are defined by the plugin.xml file in your theme's PortalServer_root\theme\wp.theme.worklight.ext\installedApps\wp.theme.worklight.ext.ear\wp.theme.worklight.ext.war\WEB-INF folder. These platform modules load the appropriate native resources for the device, giving access to the full MobileFirst and Cordova APIs. For example, it gives access to the following resources on the device:

  • Camera
  • Geolocation
  • Contacts
  • Local storage
  • Media
  • Push notifications
  • User information

These platform modules are loaded or not based on device class conditions, as you can see in the following plugin.xml code snippet for the mf_android_70 module:

<module id="mf_android_70">
        	<runtimeActivation>
				<condition deviceClass="worklight+android"/>
			</runtimeActivation>

The mf_android_70 module loads if the device class is both MobileFirst and Android. The device class is determined by the HCL server that is based on the user agent string of the client device. For example, a user agent string for an Android phone looks like this example:

Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

A MobileFirst hybrid application automatically appends "/Worklight/version" to the end of the user agent string, such as:

Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30/Worklight/6.1.0.0

Windows Phone MobileFirst applications cannot modify the user agent. Instead, HCL sets a session cookie that is called wp.agent.ext to "/Worklight" whenever it detects a uri=wl:id request parameter, and appends that cookie's value to the agent before it evaluates device classes. This parameter must be present on the initial request from the hybrid application or MobileFirst is not available on Windows Phone devices.

Appropriate matching is used to determine the device classes from the user agent string. The device classes in turn determine the appropriate platform modules to load. For example, the mf_android_70 native resources are loaded for a portal that runs in a MobileFirst hybrid application on an Android device. But it does not load in many other cases. For example, if it is on an iOS device, or if it is a portal that is not wrapped in a MobileFirst hybrid application, these resources do not load.

The same portal pages adapt their capability that is automatically based on the context in which they are running. For example, a page can provide access to the device's camera if it runs in the context of a MobileFirst hybrid application. The same page cannot get access while it is running outside the context of a MobileFirst hybrid application.

The Cordova and MobileFirst API have overrides to improve performance and allow integration with HCL. The overrides allow the MobileFirst Client API to find the resources in the deployed web application. The overrides also allow the Cordova plug-ins to be packaged into a module and allow the multiple JavaScript resources to be fetched in one request by the resource aggregation framework.

Shell application

If your application is a shell that uses a web view to render all markup from the HCL Portal site, then you do not need a MobileFirst server.

If your application is using a mixed model approach where some of the application markup is coming from your HCL Portal and other markup of the application is coming from native resources that might be fetching Web Content Manager resources, then you must install a MobileFirst server to provide these resources.

Direct update service

If you plan to use the direct update service feature to update the embedded markup for changes, you require a MobileFirst server.

Native notifications

If your application uses native notifications, MobileFirst is required to generate the iOS and Android notification service.

Authentication services

If you use the MobileFirst authentication or access control service for single sign-on (SSO) between MobileFirst and HCL, you must install a MobileFirst server. If you plan to use anonymous access or access all resources of the application through HCL or HCL Web Content Manager, then you do not need a MobileFirst server.

Tracking usage

If your application uses MobileFirst to track usage, you must install a MobileFirst server. The server that you install must also support the load from clients who send usage data.

Device provisioning

If you are providing device provisioning, you must install a MobileFirst server to provide the certificate for the device and data.

Application Center EAR

The Application Center Ear is an optional application that provides an application store environment. If you are using it to manage applications on devices as an MDM solution, you need a MobileFirst server to run the MobileFirst EAR and the Application Center EAR.