Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Jitendra_Kansal
Product and Topic Expert
Product and Topic Expert
I am happy to announce that a new release of the Mobile Development Kit (MDK) Client is available for all Mobile Services customers and can be downloaded on the SAP Software Center and the MDK Download page. 

 This release adds incremental functionality over the previous MDK Client 3.0 SP01 release.  

 



SAP Mobile development kit (MDK) extends SAP Cloud Platform Mobile Services and SAP Web IDE to provide you with a complete set of mobile application development and management tools, on-boarding, 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 –  


Support Complex OData types


You can now able to consume OData services that utilize complex OData types. This includes binding to complex type fields as well as setting complex types in CRUD operations.  

 Example: Assuming your current context's binding-data is as follows: 
{   
"EmployeeID": "12345",
"EmployeeName": "Product A",
"Address": {
"City": "CityA",
"Street": {
"StreetName": "StreetB",
"HouseNo": "1"
}
}

"Roles": [{
"RoleName": "Role A",
"RoleFunction": "Func A"
},
{
"RoleName": "Role B",
"RoleFunction": "Func B"
}
]}

 

You can bind these properties in your metadata: 
"Title": "{EmployeeName}", 
"Subhead": "{Address/City}",
"Description": "{Address/Street/StreetName}"

 

You can also bind property of an item in an array by using number in the binding path: 
 "Title": "{Roles/0/RoleName}

Add support for OData v4 online & action import


You can now consume OData v4 (online) services that include calls to OData actions and pass in complex data types. Any results should also be usable in pages and lists.  

Support OData v4 on existing OData actions: 

  • Target Binding and property binding 

  • Create, Open, Read 

  • CreateEntity, UpdateEntity, DeleteEntity 

  • CreateMedia, DeleteMedia 

  • CallFunction 

  • Support new data types that's introduced in OData v4



Headers are now supported in CallFunction action and are being passed to the OData Service. 

 Headers are already supported in CreateEntityUpdateEntity, etc. 

Headers should be in structure of Map{String, Map{String, String} or String}. The parameter values are resolved from the current context
{     
'Header1': {
'Parameter1': String,
'Parameter2': String,
},

'Header2': {
'Parameter1': String,
'Parameter2': String,
},

'Header3': String
}

 example:

 
{
"ActionResult": {
"_Name": "results"
},
"ActivityIndicatorText": "Assign to Warehouse Order...",
"OnSuccess": "/WM_Open_WT/Actions/Navigation/Nav2DetailsWT.action",
"ShowActivityIndicator": true,
"Headers": {
"If-Match": "{@odata.etag}"
},
"Target": {
"Function": {
"Name": "AssignWarehouseOrder",
"Parameters": {
"Warehouse": "{Warehouse}",
"WarehouseOrder": "{WarehouseOrder}"
}
},
"Service": "/WM_Open_WT/Services/Warehouse_Order_Task.service"
},
"_Type": "Action.Type.ODataService.CallFunction"
}


You can now add a custom logo for welcome screen for iOS by adding a Branding.nss file in the App_Resources/iOS directory. If a file is there, the client will pick it up and load it first. NSS is cumulative, so styles in Branding.nss can be overriden by SDK-level styles in the definitions out of the box. For example, to brand the Welcome Page Logo, this file can be used: 
// Branding.nss
fdlFUIWelcomeScreen_logoImageView {
image-name: custom-logo.png; /* user is in charge of putting this file in the App_Resources/iOS as well */
}

 

For Android - Custom logo for welcome screen for android can be specified by adding custom logo file to the drawable resource folders and updating the style in the .mdkproject/App_Resources/Android/src/main/res/values/styles.xml. 

You need to add your custom logo file in the /res/drawable (or drawable-XXX) folder(s). 

 e.g. /res/drawable/custom_icon.png 

 
<style name="OnboardingLogo"> 
<!-- The value is always @drawable/<your_logo_name_without_ext> -->
<!-- Do not add the file extension e.g. .png -->
<item name="android:src">@drawable/custom_icon</item>
</style>

 

Expose CSDL options for Offline OData


You can now specify CSDL options for the offline OData by adding OfflineOptions to service metadata. 

"OfflineOptions": { 

  "CSDLOptions": [ 

"disableNameValidation", 

"ignoreAllAnnotations", 

"ignoreAllReferences", 

"ignoreEdmAnnotations", 

"ignoreExternalReferences", 

"ignoreInternalReferences", 

"ignoreStandardReferences", 

"ignoreUndefinedTerms", 

"ignoreXmlAnnotations", 

"processMixedVersions", 

"resolveUndefinedTerms", 

"retainOriginalText", 

"retainResolvedText", 

"traceParsingOfElements", 

"warnAboutUndefinedTerms" 

] 

}

 

 

Additional Languages Supported:Traditional Chinese


In the previous release of the Mobile Development Kit, we added support for languages - Czech, Dutch, Hungarian, Italian, Japanese and Korean and this release supports additional language – Traditional Chinese.  The MDK now support 15 total languages. 

  • English (Default) 

  • Simplified Chinese 

  • Traditional Chinese 

  • Danish 

  • French 

  • German 

  • Spanish 

  • Portuguese 

  • Norwegian 

  • Czech 

  • Dutch 

  • Hungarian 

  • Italian 

  • Japanese 

  • Korean 



Provide access to NativeScript Utils module


You can now access the NativeScrtipt's Utils module from a rule so that you can call openUrl() API, required for calling external URLs, as well as launching external apps via URL schemes. 

 
export default Rule(mdkAPI) {   
const utilsModule = mdkAPI.nativescript.utilsModule; utilsModule.openUrl("https://docs.nativescript.org/core-concepts/utils")
}

Support bindings in ToolbarItems


The following properties of ToolbarItem should support Rules, Binding, TargetPathDynamicTargetPath, Global: 

  • _Name

  • Caption

  • Image

  • SystemItem

  • Visible

  • Enabled

  • Clickable

  • Width

  • ItemType 


 


Enable / disable screen sharing in the Android client


You can now control (in a custom Android client) whether to allow taking screenshots and sharing screen for demo purpose.  

In BrandedSettings.json file, you can override the settings that controls if screen sharing and screen shots are enabled or disabled.  By default, if the value is not present it should default to not sharing or taking screen shots. 

 
{  "ConnectionSettings": {       
“EnableScreenSharing”: true
},

New to Mobile Development Kit development?



Many thanks to our dev colleagues to share inputs in writing up this post.

Regards

Jitendra Kansal

Product Management, SAP Cloud Platform Mobile Services
SAP SE