Product Information
What’s new in Mobile development kit client 4.0 SP02 (4.2)
I am happy to announce that a new release of the Mobile Development Kit is available for all Mobile Services customers and can be downloaded on the SAP Software Center (and also available on community Download page).
This release adds incremental functionality over the previous MDK Client 4.0 SP01 (4.1) release.
SAP Mobile Services Client 4.2.1 is also available in Apple AppStore and Google Play Store.
SAP Mobile development kit (MDK) extends SAP Cloud Platform Mobile Services and Editor (SAP Web IDE/Business Application Studio/VSCode extension) to provide you with a complete set of mobile application development and management tools, onboarding, offline support, and central lifecycle management. It offers a metadata-driven approach to create native supported applications so no experience of creating iOS or Android apps is required.
The main focus of this release are:
-
- New UI controls
- Enhancement
- Support In-App Onboarding QR Code Scanning
- List Picker in Filter page
- Support Append Path to Service Destination
- Support styles in Object Header
- Object Collection Search
- Detail Image Text (avatar image) for Object Cell
- Customizing Transition in Navigation
- Support HTTPS URL Images for Action Bar and Tool Bar
- Server Side Paging Support
- Extensions-Support creating Extension as UITableViewCell
Bottom Navigation Control
You can now use Bottom Navigation control (part of a newly added Bottom Navigation Page) to show the navigation items. Each Tab item contains both icon or text or both, the icon could come from the app resources or from fonts (UI5 font icon library ).
This control:
- is for high level navigation where the separate tabs don’t have shared context
- is limited to 5 tabs at maximum
- each tab’s content must reference to a page
Check the guide & metadata reference for more details.
Tabs Control
You can now use Tabs control (part of a newly added Tabs Page) to show the navigation items.
This control allows you to have any number of items either in Top or Bottom position.
Check the guide & metadata reference for more details.
KPI Header Control
You can now add a KPI Header section to a section table in your MDK app to display the different Key Performance Indicators (KPI).
You can also style the KPI Header, KPI View, KPI progress view.
Check the documentation for more details.
Chart Content section Control
You can visualize 2D data in chart form (line, column) using new control – Chart Content Section.
- This control displays chart in a non-full screen context
- It will primarily have 3 sections: title section, summary section and chart section
- Title section – is supposed to have Title, Subtitle and status
- Summary Section – provides high-level details about the chart data
- Chart section – details the chart data with category-axis and value-axis
Check the guide & metadata reference for more details.
Analytics Card Collection Control
Analytic Card Collection is a container that manages and displays a set of Chart Cards. Chart Cards display a thumbnail view of a chart, with key information shown.
Check the guide & metadata reference for more details.
Support In-App Onboarding QR Code Scanning
We have enhanced the on-boarding experience in MDK Client. We now support onboarding via in-app QR scan.
- Scan in App QR code from the SAP Cloud Platform Mobile Services (NEO) cockpit
- Scan the QR code generated from SAP WebIDE
- Scanning the QR code image saved in the phone
When you scan the QR Code, you will be shown a success/failure toast message if QR Code is parsed and loaded.
Check the documentation for more details.
List Picker in Filter page
You can now have a selection list in a filter pop-over. Both single select and multi-select should be possible.
{
"Caption":"FilterPage",
"Controls":[
{
"Sections":[
{
"Controls":[
{
"AllowEmptySelection":true,
"AllowMultipleSelection":true,
"Caption":"By LastName (Dynamically)",
"FilterProperty":"LastName",
"IsEditable":true,
"IsSelectedSectionEnabled":false,
"IsVisible":true,
"PickerItems":{
"DisplayValue":"{LastName}",
"ReturnValue":"{LastName}",
"Target":{
"EntitySet":"Customers",
"Service":"/MDK42/Services/serv.service"
}
},
"_Name":"FormCellListPicker",
"_Type":"Control.Type.FormCell.ListPicker"
}
],
"Visible":true
}
],
"_Name":"FormCellContainer0",
"_Type":"Control.Type.FormCellContainer"
}
],
"Result":[
"#Page:FilterPage/#Control:FormCellListPicker/#FilterValue"
],
"_Name":"FilterPage",
"_Type":"Page"
}
Check the documentation for more details.
Support Append Path to Service Destination
You can now append path to your service’s destination. E.g., below are two services:
https://services.odata.org/V2/Northwind/Northwind.svc/
https://services.odata.org/V2/OData/OData.svc/
You can setup one destination in Mobile Services cockpit pointing to the root path: https://services.odata.org
and in MDK metadata service file, you can use this destination to call both the services. You need to provide the respective path suffix while creating a service file.
In Offline OData Service, if PathSuffix is set, you must also set the Offline Store Name.
Check the documentation for more details.
Support styles in Object Header
You can now style ObjectHeader control. Below properties are supported for styling.
- “ObjectHeader” (represent the whole object cell itself) – background color (for iOS & Android)
- “BodyText” – font (color, style) – iOS only
- “Description” – font (color, style) – iOS only
- “Footnote” – font (color, style) – iOS only
- “HeadlineText” – font (color, style) – iOS only
- “StatusText” – font (color, style) – iOS only
- “Subhead” – font (color, style) – iOS only
- “SubstatusText” – font (color, style) – iOS only
Due to limitation in Android, we support only ObjectHeader background color for Android.
Object Collection Search
You can now enable search on Object collection sections just like Object Tables.
"Search": {
"BarcodeScanner": true,
"Delay": 300,
"Enabled": true,
"MinimumCharacterThreshold": 3,
"Placeholder": "Item Search"
},
Check the documentation for more details.
Detail Image Text (avatar image) for Object Cell
A new property DetailImageText allow you to put a placeholder text that will be rendered in place of the Detail Image. This can be useful for displaying initials of a person name if they do not have a profile image.
"ObjectCell":{
"DetailImageIsCircular":true,
"DetailImageText":"CI",
"Title":"Circular Avatar Image"
}
Check the documentation for more details.
Customizing Transition in Navigation
There is now a new property called Transition in Navigation action that allows you to customize the default transition and animation.
{
"OnFailure": "/DemoApp/Actions/FailureMessage.action",
"PageToOpen" : "/ DemoApp /Pages/CustomerOrders.page",
"_Type" : "Action.Type.Navigation",
"Transition": {
"Curve": "Linear",
"Duration": 1,
"Name": "Fade"
}
}
Note: This property is applicable only page-to-page navigation (including within a modal dialog). It doesn’t apply to opening and closing of modal dialog and also to tab switching in BottomNavigation page.
Check the documentation for more details.
Support HTTPS URL Images for Action Bar and Tool Bar
We now extend the support for rendering the images via https URL for values in image properties for image in action bar or icon in tool bar.
Check the documentation for more details.
Server Side Paging Support
We introduce a new property ServerSidePaging that specifies if the Target service supports pagination via skipToken.
Note: If this property is set to true, then QueryOptions should not contain ‘skip’ and ‘top’ for pagination to work.
This feature is useful for scenarios where OData service supports only server pagination (no client pagination). It loads data in one server paging by default, loads next page data when scroll down to bottom.
"_Type":"Section.Type.ObjectTable",
"Target":{
"Service":"/MDK42/Services/sample.service",
"EntitySet":"/SalesOrders",
"QueryOptions":"$expand=Items",
"ServerSidePaging":true
},
Check the documentation for more details.
Support creating Extension as UITableViewCell
In order to allow better control of the extension sizing, it is now possible to implement extension for iOS platform as UITableViewCell, for more details visit UITableView Based Extension for iOS.
New to MDK development?
Follow these tutorials to learn more about Mobile development kit
Regards,
Jitendra Kansal
Product Management, SAP Cloud Platform Mobile Services
SAP SE
Added: Blog reference: Create your Mobile Development Kit (MDK) app in SAP Business Application Studio
Thank you so much Jitendra Kansal for this nice blog.
This is very informative.
-Sudhir.
Thank you so much Jitendra Kansal for this nice blog, its very helpful to explore new features.
I have tried List Picket in filter and able to see values but somehow list is not filtered based on selection. While other option is working fine.
I am trying to filter based on Equipment id and able to select equipment but after click on Apply, its not filtered.
Result tag is also defined as suggested by you.
“#Page:EquipmentFilterPage/#Control:FormCellListPicker/#FilterValue”,
Please suggest.
Regards
Mohit
Thanks for Reply.
I am calling this filter from EquipmentListView.page with the help of standard action EquipmentFilter.action and action already have below code.
"Filterable" : "#Page:EquipmentListViewPage/#Control:SectionedTable",
I have declared list picker control name is FormCellListPicker and same used in Result set.
Thanks for your help!
Mohit
The feature ListPicker in Filter page is part of MDK 4.2 release, make sure that you have updated your client with latest release (4.2.1).
Yes, it's latest client only(Android). Also i am getting QR code scanner which is new feature.
I noticed "FilterProperty" in the metadata you posted above, change it to
"FilterProperty": "EquipId",
Have a look at doc
https://help.sap.com/doc/69c2ce3e50454264acf9cafe6c6e442c/Latest/en-US/docs-en/reference/schemadoc/Page/FormCell/ListPicker.schema.html#filterproperty
Thank you so much Jitendra Kansal for your help. Its working now.
Mohit.
Hi Jitendra Kansal ,
Thanks for the details about the product. I have a quick question on the multiple services option. Is this only for Cloud Foundry or applicable in Neo too? When I try to add the services, at runtime, the application is not taking the path prefix and looking for the full ODATA Service path from the destination.
Retrieve metadata failed because the OData server returned HTTP code, 404, with message: null
Based on the log, the Path Prefix value is not being considered in URL generation. I am using the Cloud Build version from Neo Mobile Services and WEBIDE.
Thanks.
Hi Jitendra,
Thanks for the info. I will try the custom client to test the same. I have a question related to these page templates as the scenario I am trying to build needs controls from different page templates.
I need "Date Picker" in a page that is available only in Form Cell and, based on the selected date, need to filter and display data from ODATA Entity Set using ODATA Object Cell/Table, which is available in the Section Page template.
Is this something in the roadmap to make available in the upcoming release, or there any different approaches to achieve the same?
Thanks
Sumanth
Hi Jitendra Kansal
Yes, both controls in same page. Based on date selection by user, Data to be updated in Object table.
Scenario is similar to Fiori application My Time Events. Instead of going on Hybrid application route, I am using MDK approach. Challenge is to have two controls in same page and also display a running clock. I am trying different rule setup’s for the same.
Thanks
Sumanth
Hi Jitendra Kansal,
Thanks for the information. It would be nice to have controls to use in cross pages. I will try the extension control option for Date Picker as I have a requirement to show the running clock with a set interval.
Thanks
Sumanth
Sumanth Thunga
You may want to have a look at Form Cell Section support in new MDK client 4.3
Hi Jitendra Kansal
thanks for the comprehensive and detailed description.
Is there a public roadmap for MDK? I could not find it on the new roadmap explorer.
As Windows based devices/tablet still play a role in lots of companies. Are there any plans to also provide a client SDK for the windows platform? This would be very useful but I understand that native script does not provide the basis for this as of right now?
Thanks and best,
Daniel
Daniel Schwarz
Here you can find roadmap here.