We just released service pack two. As usual, you can get it on SAP Marketplace or on the SAP Community Download. Our comprehensive online documentation gives you all the details; you may also simply want to use the API docs that are embedded in the Assistant’s Help menu.
Here are some of the highlights that we added.
System Requirements, Installing, and Upgrading
We’ve built the new service pack with the most recent Swift 4.1, which is included in Xcode 9.2, Xcode 9.3, and Xcode 9.4 – any of these will do for you. The Assistant itself runs on the current macOS version.
To upgrade from version 2.0 or 2.0 SP01, simply replace the Assistant in your /Applications folder. Any apps that are managed in the Assistant can be upgraded by simply clicking on the project name and selecting ‘Refresh Frameworks…’ from the context menu. Open the Assistant main menu and ‘Export Frameworks…’ to extract the new frameworks on your disk so you can copy them into any Xcode project not managed by the Assistant.
Usage and GDPR
We’ve had support for collecting usage event in the SDK for a long time. In this release we make it much easier to collect usage information and send it to the server. We’ve introduced a UsageBroker and integrated this with the Flows frameworks, so you can automate collection of usage events and apply server settings to turn collection on/off. With GDPR being effective and similar regulations kicking in around the world, we also make it easier to ask users for consent to data collection by providing according UI flows – single/multiple screens with mandatory and optional steps. As a side note – it is still your responsibility to make sure you’re compliant with regulations, we’re giving some tools to make it easy being compliant.
Read more on this in Krishna’s blog at https://blogs.sap.com/2018/05/30/support-for-presenting-privacy-consent-forms-during-user-onboarding/.
Our onboarding flow now reacts during runtime to passcode policy changes on server. The default flow steps are updated accordingly. Users will see a message if the passcode policy has changed and they’ll be asked for a new passcode and/or will get Face ID enabled etc. These changes are per default forced to be applied. Another very useful enhancement is our ‘lock & wipe’ policy support that allows developer to force users coming online regularly – and otherwise lock the device and after a grace period even wipe the content from the device.
As a minor detail, we’re also giving users a second change to back out of a cancellation during the onboarding flow. For those who tend to press ‘cancel’ accidentally…
We also added a new API to the Foundation framework that allows pulling down client resources from Mobile Services. As one use case, we have implemented an integrated Theming download/apply functionality into Flows – this allows administrators to easily provide new Theming files in the Mobile Services Cockpit and have them applied during runtime (without rebuilding the native app).
Mobile Services also supports definition of Universal Links. In the SDK, we use this to now also support onboarding and bootstrapping of apps (as an alternative to Discovery Service or QR code scanning). Universal Links should also be used during OAuth2 authentication flows now, as they’re a more secure alternative to custom URL schemes (which are not guaranteed to be handled by a single app on your device).
On the UI control side, we made many optimizations and enhancements to existing controls; you’ll just benefit from them by updating the framework. A few relevant things in particular:
The grid table view now also supports rendering the table well in compact mode via object cells. There’s a default mapping of columns to object cell fields, so your app will just continue to work fine (and actually be usable on small devices also) for free, but you can also tweak that mapping if the default doesn’t suite you.
We’ve done updates to actions on the object cell, and added a collection view container that supports items in different sizes
We have a new ‘search to select‘ view that allows easy implementation of search/select scenarios where users can search from a bigger list of options, select multiple options, and also have an easy way of removing the selections again.
Furthermore we also continue to improve accessibility of our controls, where we see need. In this release this included improvements on object header, chart header, filter feedback bar, filter form cells, segmented control, timeline card, search bar.
The Online OData framework has been enhanced and stabilized further. A few things make it even easier to use; we added support for native Swift Decimal type in proxy classes, have a delete stream API now, and you can do function imports and actions in batches. Furthermore, the CSRF token handling is improved – just in case you ever had trouble with that.
Offline OData got a plethora of enhancements, too. Please find all the details in Sue’s blog at https://blogs.sap.com/2018/04/25/whats-new-in-offline-odata-q2-2018.
As usual, the Assistant leverages some of the enhancements that happened since the last release and stuff that we added in this release. If you want to get a quick start on the changes to the onboarding flow in particular, just re-generate a new sample app and drill down into the code.
On the infrastructure side, the Assistant does support Mobile Services on SAP Cloud Platform Cloud Foundry now. Just provide the URL as usual and the Assistant will detect which Mobile Services landscape you’re connecting to. Because of technical constraints, we cannot support SAML login for the Assistant to CF landscapes. Other than that you’ll find virtually no differences. Wherever the feature set on CF is different, you might see slightly adjusted sets of options to select from. We do support SAML authentication for Translation Hub now.
We enhanced the app generation – for OData v2 backends you can now also choose to have the Assistant generate an offline-enabled app for you. A good way of getting started on the topic.
We also do leverage more data from the backend, where possible now and generate nicer apps that might be closer to what you actually need (and give a nicer demo at a minimum). On the entity list screen, we now show images in the object cell if available as a media resource from the backend service. Also, if entities have navigation properties, our UI now allows to follow these associations (up to a level of two hops).