Skip to Content
Product Information
Author's profile photo Andreas Schlosser

What’s new in the SAP Cloud Platform SDK for iOS 3.0

Our next major version update is out and available for download at the usual places in the SAP Marketplace for customers and in the SAP Community for everybody. The content is identical, you may sometimes see patches being available on Marketplace a bit earlier than they show up on Community.

System Requirements, Installing, Upgrading

This new release is built with the just released Xcode 10 and Swift 4.2. Because frameworks are not binary compatible, you won’t be able to use any version of Xcode 9 with our latest SDK – but you probably can’t wait upgrading to Xcode 10 anyway. We’ve also posted patch PL06 of our SDK for iOS 2.0 SP02 that is built with Xcode 10; going forward this is the version we’ll maintain, so you’re safe in upgrading to Xcode 10 regardless of which version of our SDK you plan to use short-term.

Caution: If you’re using theming functionality in your app, you must upgrade to 2.0 SP02 PL06 when running on iOS 12, otherwise your app will crash.

To upgrade from an earlier 2.x version to 3.0, 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.

We have eventually removed some deprecated APIs, you’ll find the details in the upgrade instructions in our help pages. So, if you haven’t adopted your app over the last couple service packs and patches – now’s the time. We don’t expect this being a big deal but it has to be done so we can avoid having ‘legacy’ growing left and right in our API exposure.

Our brand-new Assistant

One of the first things you’ll notice is that we’ve completely redesigned the Assistant app. The Assistant is an essential part of the SDK since version 1.0 and was always meant to help getting started with the SAP Cloud Platform SDK for iOS and be the integration point between Xcode and SAP Cloud Platform. From what started small, we kept adding features to a point where we felt it necessary now to rethink the way we organize the Assistant and its multitude of features, which include

  • Generation of out-of-the-box Xcode projects for native apps that integrate with SAP backends via SAP Cloud Platform
  • Configuration of SAP Cloud Platform Mobile Services
  • Support for SAP API Hub and easy consumption of managed APIs
  • Use of SAP Translation Hub for localization of Xcode projects
  • Update existing projects by replacing the SDK framework files and regenerating proxy classes

With this new version, our goal was to have a very clear guidance through the different supported scenarios, emphasis on what configuration affects cloud vs. local entities, and most importantly: prepare the UX so it can also sustain all the great new features that we plan adding in the next iterations to make it even easier managing your Xcode projects and integrating with your development environment as well as SAP landscapes.

Here are a couple screenshots to get a first impression on what we’ve achieved

Jitrendra has also updated his detail blogs on Assistant features to reflect recent changes on discovery service, generated app, API management, translation, API business hub.

UI Controls

Let’s stay visual for a bit longer and look at some of the enhancements we’re delivering on the UI control side.


We are shipping a Fiori for iOS calendar control, eventually. It comes with the typical features that you’ve asked for, month/week view, date picker, single selection as well as range selection.


It’s been a while that we added support for maps, but we keep investing and expanding the scope. It can be a bit involved arranging all the different elements of a map on the view, so we’re now shipping a map floorplan that makes it easier for you to set things up for a full screen map in your app, including the legend, the toolbar, and all other components.

In addition, we now also support creation of geospatial objects on maps (lines, polylines, polygons). This also includes complicated operations like splitting a line, dragging each point, reordering points. This feature is very useful for apps in field worker and maintenance scenarios, but I’m sure there are plenty more great scenarios that we couldn’t even think of.


We got great feedback on the chart controls we started shipping earlier this year, so we keep adding new chart types. This time, we add stacked column charts and waterfall charts:

The Basics

Even though harder to visualize, we didn’t neglect the foundational frameworks either in this release and kept improving, stabilizing, and adding where needed based on customer feedback and our own observations.


In the foundation framework we’ve enhanced the settings download to now also favor the settings download per device over download on the user level, wherever applicable. Additionally, we’ve streamlined the log message handling for OSLogConsole logging as well as log files uploaded to SAP Cloud Platform. Security is important – all relevant libraries like OpenSSL have been updated to the lasted version to close any potential vulnerabilities.

The usage event handling has been enhanced; if you’re in the business of building apps that can be used by multiple users on the same device, we now allow configuration so that usage events can be stored and uploaded separately per user. In addition, we now have more pre-defined usage event types that you can choose to emit, incl. basic device information but also screen transition and button tap events.


We started supporting offline, i.e. non-connected apps, better in the last release and rounded off a couple rough edges so that it’s now even easier to build apps that start and restore state while the user is offline. In these cases we obviously cannot pull changed server configuration, but we’ll allow the user to get into the app based on the locally available settings. This is also reflected in the generated app that is produced by the Assistant.

When the passcode policy changes on the Cloud, we now also support enabling Touch ID automatically during the restore flow of the app; no reason to bother the end user at all in this case.


The online OData framework got some attention on the lowest layers and improvements on the networking stack. We made online OData calls cancellable now, so when you determine you’ve requested a resource but actually don’t need it anymore, you can save bandwidth and threads on the device and cancel these requests. Sounds odd, but can happen very easily, e.g. when the user scrolls through a table quickly and you’re loading resources like images asynchronously.

Custom headers and request options can now be given on a per-method level in our proxy classes. Dedicated API for offline parameters and request options makes handling a lot easier, no need anymore to work with an error-prone String-based API for you.

When you’re working with local transactions you have more control than ever with this release. We’ve implemented optimization techniques that allow merging multiple updates into a single request, or removing a create + delete operation completely from the queue; all of course only if you’ve told the framework to do so. Similarly, you can prevent empty updates from being deleted if they’re still important for your backend.

It can be very helpful for users if they see local changes in the UI; we added a flag that helps determining if an entity has locally modified descendants (vs. only modified itself as you could figure out in earlier releases with the sap.isLocal flag). You can now also differentiate between all local changes, which may not have been submitted or which may have already been submitted/uploaded but not yet downloaded, and pending changes (only those which haven’t been submitted yet).

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Mark Malone
      Mark Malone

      Congratulations! Can’t wait to start sharing the updated Assitant and new Fiori controls with our shared developer community.

      See you at TechEd Barcelona!

      Author's profile photo Lau Lautrup
      Lau Lautrup

      Hey Andreas. Thank you for a great post.

      Have some questions that I hope you can help me answer.

      It seems that the generation of a offline project has been left out of the new assistant?

      I played around with the new calendar and had some issues with the following:

      When using Calendar style: multipleSelectionView I can only select a range or one day. What do I do if I want to select multiple days individually: e.g 1. 3. 6. date of a month.

      The calendarStyle attribute is set when init method of the calendarView. I therefore can't change it at a later stage. What is worse is that the FUICalendarFloorplanViewController's calendarView is a get only property. We are thereby not able to use any of the other styles like expandableView or weekView

      Hope you can help me out

      BR. Lau

      Author's profile photo Andreas Schlosser
      Andreas Schlosser
      Blog Post Author

      Lau, the offline generation is still part of the Assistant - please check out the last screenshot in the Assistant section of my post. It has the selection for online vs offline OData access.

      On the calendar questions - would you mind posting a dedicated question at please so my team can respond separately?



      Author's profile photo Lau Lautrup
      Lau Lautrup

      Hey Andreas. Thank you for getting back to me. Will post my questions. Seems that the Feature section is not included when I use the Reuse Existing Application configuration:


      Author's profile photo Andreas Schlosser
      Andreas Schlosser
      Blog Post Author

      That is correct. We streamlined the logic in the Assistant here where we haven't been very consistent in the earlier releases. When you reuse existing cloud configuration, we won't let you change that existing cloud configuration but use the Assistant to produce an Xcode project based on that cloud configuration. This is to avoid unwanted side effects on other apps that might potentially already exist and connect to that cloud configuration as well.

      So, if you have the Offline feature enabled on a mobile app project in the cloud, the Assistant will create an offline app, otherwise the Assistant will create an online app. The same applies also for all other features that you can configure in the 'create new' scenario - we load what's enabled on the cloud and generate the app accordingly.

      Hope that makes sense


      Author's profile photo Lau Lautrup
      Lau Lautrup

      aa ok.

      Thank you. Makes sense now.

      BR Lau