What’s new in SAP Cloud Platform SDK for iOS 2.0 SP02
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).
Nice blog - thanks. Any idea why the assistant now fails with
Feature configuration failed
The same service and setup worked with prev. version of the SDK. We are not using Discovery Service (disabled in assistant) and we have tried with both online/offline options - still same result.
Something is going wrong there, apparently we still attempt to do something with Discovery Service even though you've disabled it. We'll look into it.
To get you going, please give your user the required permission to access discovery service (regardless you want to use it or not). To do this,
Then restart the Assistant so you get a fresh session and the new roles kick in. You should now see that the Assistant is able to load the Discovery Service email domain in the last step and then the app generation should work fine again - with or without Discovery Service box checked.
Thanks - it worked!
One more question - when creating an offline app using the assistant tool the app seems to be generated as expected. It does however not allow the user to login when offline - this is the exact same issue we found with some of the tutorials for converting online app to offline.
We already solved this in the apps that we have build until now but I think this should be changed in the assistant as well.
Is this something you will bring to the developer team or should I create an OSS?
Thanks for sharing this here; I agree this needs to behave differently. This is already in the backlog to be adopted.
I understand you've solved this for you anyway already; others running into this should remove the authentication and settings download steps from the restore flow. We're working on a better solution, so the authentication and settings download will actually happen when online, but not fail when offline.
One minor correction - instead of removing the authentication step, leave the authentication step in the restore flow, but set the
false. You only need to comment out the settings download step (and this will improve soon as well).
I have a similar issue when I finish creating a new app in this new version of the assistant. I get this error:
Never saw this on previous versions. I've also tried disabling and re-enabling logging uploads in mobile services for the app but the setting seems to have no effect.
Can you please provide us the Console logs when you see this?
You can open the macOS Console application by opening the Preferences in the Assistant and on the General tab you copy the filter and click the Open Console button. As the Console application collects all you system logs please use the filter to only include the Assistant related logs.
One other minor point... When you create a new destination while creating an app in the Assistant - if you choose BASIC auth it doesn't give you the option to enter the username and pwd. You have to go into the mobile service cockpit and enter the credentials...
Can you please provide more detailed steps on how to reproduce this issue?
I tried to reproduce this issue but did not succeed. Could you please help me with your exact steps?
I tried the following:
Cannot find the software download. Obviously it was removed from Store and moved to https://www.sap.com/developer/trials-downloads/additional-downloads/sap-cloud-platform-sdk-for-ios-14485.html
But there the latest downloadable version is 2.0 SP1 PL5. Where can I find the download for the new version?
Thanks and Regards,
Apologies Volker; I'm aware of this and in touch with the colleagues who can help resolve this situation. I expect the recent SP02 showing up there very soon. In the meantime, if you are an SAP customer you can get access to the current SDK version via the SAP Marketplace.
Thanks, Andreas. Would be nice to get an info, when download is available. In the Service Marketplace I did not find it.
Enjoy your weekend!
Sure, will update this post with the new link. I can find the download of 2.0 SP02 PL01 at https://launchpad.support.sap.com/#/softwarecenter/template/products/%20_APP=00200682500000001943&_EVENT=DISPHIER&HEADER=Y&FUNCTIONBAR=N&EVENT=TREE&NE=NAVIGATE&ENR=73555000100900002101&V=MAINT&TA=ACTUAL&PAGE=SEARCH/SAP%20CLOUD%20PLTFRM%20SDK%20IOS%202.0, but I'm not sure this link will work across different user accounts. The way to find this is to search for 'sap cloud platform sdk for ios' on the main entry page at https://launchpad.support.sap.com/#/softwarecenter/, then select "SAP CLOUD PLTFRM SDK IOS 2.0 (Maintenance Product", there you'll find the file SAPCPSDKIOS02_1-70003061.ZIP
Hope that works until the community download is available
Thanks and a great weekend to you as well
SMP seems to work only for SAP employees. Both ways in your reply show nothing to download. So I have to wait ... 😉
Thanks for waiting - you can go to https://www.sap.com/developer/trials-downloads/additional-downloads/sap-cloud-platform-sdk-for-ios-14485.html and download the SDK from this place going forward.
Hi Andreas, I just upgraded and it was very smooth process. I was excited to try the offline app generated by the assistant. It works fine but I was disappointed that there is nothing to keep the user informed. The guidelines state that there should be feedback, such as a banner when the device goes offline. Perhaps this could be added to the backlog?
I got this working in my own app, using a open-source reachability framework but I think adding something to the template would be 'in the spirit' of the SDK.
Absolutely agreed, we wanted to roll out the offline scenario support as soon as possible, but will continue improving on it and expanding the scope. We do have https://help.sap.com/doc/978e4f6c968c4cc5a30f9d324aa4b1d7/Latest/en-US/Documents/Frameworks/SAPFoundation/Network%20Communication.html, so we'd better use it...