Skip to content

What's New

Mobile Development Kit Client 5.2

Notable new or changed features for the Mobile Development Kit Client 5.2

New UI Controls

Multi-Select

Object Table now supports multi-selection mode.

It can be enabled via Selection > Mode property or via the setSelectionMode API in Object Table SectionProxy

You can also allow users to enable it via long press on any of the object cell item with the LongPressToEnable property

You can get all of the selected values via the getSelectedItems API or the last changed item via the getSelectionChangedItem

We have also provided two new events on Object Table that you can listen to:

  • OnSelectionChanged - This will be triggered whenever a user selects or deselects an item.
  • OnSelectionModeChanged - This is triggered whenever the selection mode changes, for example, from None to Multiple and vice versa, and allows the app to hide or show certain controls when in or out of selection mode.

Support Custom Accessory Icon in Object Cell

You can now provide custom accessory icon by setting AccessoryButtonIcon property or AccessoryButtonText (iOS only).

AccessoryButtonIcon takes precedence over AccessoryButtonText.

Defining these properties overrides the values defined for AccessoryType and ProgressIndicator.

The event for handling these is still OnAccessoryButtonPress

Note that this feature is currently only supported for iOS and Android, and not for Web applications.

Support KPISection

KPISection is a SectionedTable control that manages and displays the different Key Performance Indicators.

Enhancement

Multi User Support for Android

MDK now supports multi-user login capability. This allows a MDK app on a device to be securely shared across multiple users. For more details please see Multi User Support.

Supporting Themes With Multiple LESS Files

You can now provide multiple LESS files for different kinds of themes and you can switch between them at runtime.

We provide new APIs to help you switch between these themes:

  • SetTheme Action - Allows you to use action to set the theme in the application
  • ClientAPI setTheme - Allows you to use JavaScript function to set the theme in the application.
  • ClientAPI getAvailableThemes - Returns an array of available themes (it is based on the file name of the LESS files without the .dark / .light post-fix)

Supporting Dark Mode

SAP Mobile Services now supports dark mode in both iOS and Android by default. The UI automatically changes to dark mode when the device setting is changed to dark mode.

To allow your app to maximize the customization, you can also provide light and dark mode versions of LESS. You can also provide light and dark mode versions of images in the Images folder of your project.

For more details please see Dark Mode Support.

Note

There is currently no support to force the app to light mode, so make sure any extensions or custom styling are adapted to support dark mode when you upgrade to this version.

Data Subscription Enhancements

DataSubscription is now enhanced to redraw the UI more efficiently.

Operations Previous Behavior New Behavior
Create Entity Entire UI is reset. If the UI is a table bound with data binding, it is reset it to first page of data. Entire UI is redrawn. If the UI is a table bound with data binding, it is redrawn up to the last loaded page of data to keep the scroll position.
Delete Entity Entire UI is reset, if the UI is a table bound with data binding, it will reset it to first page of data Entire UI will be redrawn, if the UI is a table bound with data binding, we will redraw it up to the last loaded page of data to keep the scroll position
Update Entity Entire UI is reset, if the UI is a table bound with data binding, it will reset it to first page of data If the table has data binding, we will look for the cell that's bound to the same read link of the changed entity and refresh only that cell

You can now use Deep Link from a web page, email or from another app to launch the target app and then execute certain actions such as navigating to a page or may be approve a request.

For more details please see Deep Link Support

Web - Bottom Navigation Control

We are pleased to announce that Bottom Navigation control is now supported in the web runtime.

Web - Support Data Paging Loading Indicator

Web version now also supports DataPaging property.

You can enable the loading indicator and customize the text. The loading indicator appears as the user scrolls to the bottom of the list and the app starts loading the next set of data, and is dismissed when the next set of content is rendered.

For iOS only, use the Header UseTopPadding and Footer UseBottomPadding with Grid Table to add padding between sections.

Support Multiple Sections Search in Tabs Page in Android

Search is now supported across multiple searchable section controls in a Tab page. This is an enhancement over earlier release where Search would be disabled in case of more than one control in a Tab page for Android.

Support Data Paging on Last Section in Android

Android now supports data paging for last collection control in a SectionedTable. The order of the control is determined on the basis of there occurrence in the metadata. This is an enhancement over earlier release where paging would be disabled if there are more than one control in a SectionedTable. Here are some sample scenarios:

Scenario 1: In a SectionedTable I have the following sections:

  • Contact Table - This table will not be paging enabled
  • Object Collection - This table will not be paging enabled
  • Object Table - This table will be paging enabled

Scenario 2: In a SectionedTable I have the following sections:

  • Form Cell Section - Does not support paging
  • Button Table Section - Does not support paging
  • Object Collection - This table will be paging enabled

Scenario 3: In a SectionedTable I have the following sections:

  • Object Collection - This table will not be paging enabled
  • Object Table - This table will not be paging enabled because it is not the last section
  • Form Cell Section - Does not support paging

Support SkipReset Flag in Logout Action

Skip Reset flag in Logout action can be used to skip the client reset.

Support setSideDrawerButton Client API for SideDrawer

setSideDrawerButton API can be used to dynamically modify the DrawerButton for SideDrawer.

Support AlwaysShowDrawerButton in SideDrawer

AlwaysShowDrawerButton can be used to show DrawerButton on every page. In Android once this property is enabled, the back button would be hidden and instead hardware back button needs to be used.

Support of Rule for SideDrawer Items

SideDrawer Items now support rule, this now allows to generate items array during runtime.

Deprecate ActionBar Text Property

Text property in ActionBar is now deprecated and has been replaced with Caption.

Deprecate ToolBar Controls and Image Property

Controls array in ToolBar is now deprecated and has been replace with Items. Image property in ToolBar is now deprecated and has been replace with Icon.

Support Style Enhancements for Object Cells

Object Cells now supports couple of new styling properties

  • BackgroundColor - This can be used to style the background color for Object Cells
  • DetailImageText - This can be used to style the DetailImageText

Support isAppInMultiUserMode Client API

isAppInMultiUserMode API determines if the application is in single or multi user mode.

Support Rules for Result Object in Filter Page

Result object in Filter Page now supports rule. This allows further customizations to the filter and sorter values returned out of user selection. This also expands the current support for Filters and Sorter to unsupported controls such as DatePickerFormCell, SegmentedButtonFormCell and others. With-in the rule use the createFilterCriteria to create FilterCriteria object and finally return an array of FilterCriteria objects.

OData Service

New ODataProvider API

You can now get handle to OData provider via the ClientAPI.getODataProvider(serviceName).

This class gets information about the OData provider such as whether it's in offline mode (isOfflineEnabled()), or is initialized (isInitialized()).

For offline enabled OData provider, you can also get its offline parameters (getOfflineParameters()), where you can get or set its custom headers.

See ODataProviderProxy for more details.

Support EnableUndoLocalCreation and EnableRequestQueueOptimization Offline Options

  • EnableUndoLocalCreation undo local operations on an entity. For example if EnableUndoLocalCreation is enabled and create, update and delete operations are performed on an entity. While uploading all the 3 requests will be removed and therefore will not be sent to the service back end.
  • EnableRequestQueueOptimization combines multiple OData operations on an entity into one single operation. For example if EnableRequestQueueOptimization is enabled a create and multiple updates on an entity will be uploaded as one single create request.

Branded Client

Better Support for App_Resources Files Overrides

Added support to override only a part of resources files in <generated-project>/app/App_Resources. It is done by specifying your overriding files in the .mdkproject/App_Resources_Merge.

Files in the .mdkproject/App_Resources_Merge folder support merge (replace/add) for the following file types, other files will be overwritten.

See Overriding App Resources for more details.

Support ObfuscateEmail in BrandedSettings.json

ObfuscateEmail property can be used to obfuscate email address on the sign in screen. The default value of this flag is false. This property is supported on Android only.

Mobile Development Kit Editor 2104

Title Type Environment Description Available as of
Support Client 5.2 metadata New Neo (Web IDE) Support new metadata changes for Client 5.2 Apr 20, 2021
Support Client 5.2 metadata New CF (Business Application Studio) Support new metadata changes for Client 5.2 as Business Application Studio extension Apr 20, 2021
Support local run for Web applications New CF (Business Application Studio) Support local run for Web applications in Business Application Studio Apr 20, 2021

Last update: April 20, 2021