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: 
aschlosser
Employee
Employee
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.

Calendar


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.




Maps


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.


Charts


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.

Foundation


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.

Flows


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.

OData


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).
6 Comments
mrkmln
Explorer
Congratulations! Can’t wait to start sharing the updated Assitant and new Fiori controls with our shared developer community.

See you at TechEd Barcelona!
0 Kudos
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
aschlosser
Employee
Employee
0 Kudos
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 https://answers.sap.com/tags/73554900100800000743 please so my team can respond separately?

Thanks
Andreas

 
0 Kudos
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:


 
aschlosser
Employee
Employee
0 Kudos
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
Andreas

 
0 Kudos
aa ok.

Thank you. Makes sense now.

BR Lau