SAP Technology News

Innovapptive adopts SWIFT for iOS App Development – Cuts development times by 30%

Background

Swift for iOS app development is being adopted by many top organizations like American Airlines, Getty Images, LinkedIn and Duolingo for obvious technical and business benefits – ranging from enhanced productivity to minimized bugs in their shipping apps with interest in this new programming language slowly rising.
In order to catch up with the trend brewing in the techno-corporate world and to generate more value for its customers, Innovapptive Inc., a SAP mobile application development and services partner  has adopted Swift as a programming language for iOS development.
What is so great about Swift that corporates are slowly switching from Objective-C to Swift? This blog explores these aspects from a technical perspective – high level comparison of Swift over Objective-C and finally delves into the core business benefits that Innovapptive had accrued by adopting Swift.

What is Objective-C?

Objective-C is a general purpose, object oriented programming language that incorporates Smalltalk type messaging to the “C” programming language. This is the core programming language that is used by Apple for the OS X and iOS operating systems and their respective application programming interfaces (APIs) such as Cocoa and Coca Touch.
However, there was lot of complexity involved in Objective C pertaining to concepts like declaring constants, arrays and hash tables, apart from non-suitability for high-performance code, prompting developers to revert to C or C++ in most of the cases. This was causing a major hiccup for Apple, particularly at a time, when it is planning a massive proliferation of Apple products in the market that rank high in performance and efficiency.

Emergence of Swift programming language

After a thorough research, Apple introduced Swift, a new programming language at Apple’s 2014 Worldwide Developers Conference (WWDC).  This new programming language is slowly revolutionizing the way applications are built on Apple iOS, offering a concise, yet expressive syntax, enabling apps to run at lightning speed. One great thing about Swift code is it works side by side, along with Objective – C.

Flexibility of Swift over Objective C

Elimination of .h and .m files
Header files was a major burden in C. Instead, Swift offers flexibility to keep all code contained in .swift files. This implies a 50% reduction in file count for your projects!
Elimination of brackets
As with any high level programming language, Objective-C has a tendency to make programming complex due to its unique bracket-based syntax. Instead, Swift uses parenthesis and named parameters, similar to that in C#.
No more pluses and minuses
Instance methods are prefixed with a minus and class methods are prefixed with a plus in Objective-C, whereas in Swift, methods are prefixed with a func keyword and class methods (“type methods”) are additionally prefixed with the classkeyword.
No need to use semicolons
Unlike in Objective “C”, you can still use semicolons to terminate sentences, but they are not required. The only instance where you need to use semicolons is when you have multiple statements on a single line.
No need to use more asterisks
C pointer syntax is a domain that is really daunting for new developers. Swift eliminates this usage; it doesn’t provide direct access to pointers. However, there are still various pointer types available under its belt, when you need direct access to memory, for instance, CMutablePointer.
Type inference
Type inference is a simple method to specify a variable’s type at compile-time without being explicit. This is executed using the var keyword, just like in C#. However, Swift offers “catch-all” data types: AnyObject can represent an instance of any class type and Any can represent an instance of any type at all (not just function types).
Type safety
Objective-C provides quite a flexibility with data types. For instance, an NSArray can contain multiple types of objects at once. This may seem simple and flexible, but it makes the code more error-prone and transfers much type checking to runtime. Swift offers safety of strongly typed variables, which means as many of these errors can be easily caught at compilation time. Generics, for instance, enables collections such as arrays to be strongly typed, enabling them to contain only a particular type of the object. This is enforced at compilation time.
Strings are value types
Strings are value types in Swift and not reference types, unlike in Objective-C. You can easily compare using the == operator or concatenated using the + operator. String values are also copied when passed into a function.
A taste of functional programming
In Swift, functions can be nested and used as parameters and return types (similar to JavaScript). Swift uses closures, just like blocks in Objective-C, but with the power of lambdas in C#. Swift also encourages the usage of immutable “constant” variables via the let keyword to make code safer that is consistent with functional programming paradigm. If a variable should never be changed, the compiler will enforce it. This is unlike in Objective-C, where classes have their own mutable and immutable versions.
Multiple return types
In Objective-C and other C-based languages, functions can only return one value, whereas in Swift, it permits any number of return types called tuples, opening up new avenues for a cleaner and a leaner code.
A different variant of nil
In Objective-C, nil represents a pointer to nothing and hence restricts usage for value types such as ints, structs or enums. Swift introduces optionals, which are similar to nullable types in C#.
If statements require booleans
The nil or the number 0 evaluates to false and any other value to true in C-based if statements. This lets developers to perform shortcuts like if (array.count), where any value other than zero will return true. In Swift, in an if statement, the conditional must be a bona-fide Boolean expression like if (array. count > 0). This may eliminate certain code shortcuts, but lets the code become more explicit and safer.
Different forms of Switch statements
Switch statements are great branching mechanisms, and much better than if/else if there are more than a few conditions.
Objective-C limits case comparisons to integer comparisons and equality tests. Swift enables string and complex object comparisons. Apart from that, switch statements in Swift always exit as soon as they find a matching case by default; this makes break keyword no longer necessary.
Elimination of boxing and unboxing
Swift Arrays eliminates the usage of boxing and unboxing – a concept widely used in C by natively supporting value types as well as reference types.
Only two types of collections
Unlike Objective-C with many different collection types (NSSet, etc) as well as their mutable variants, Swift has only 2 collection types: arrays and dictionaries and are mutable by default. They can be made immutable by using of the let keyword. You can change the contents of the immutable arrays as long as the array size does not change. You cannot change the value of immutable dictionaries.
Generics
Generics are a powerful method to write code that is strongly typed, but flexible. Similar to C#, Swift uses where after the type name to denote a list of requirements like requiring the type to inherit from a particular class or implement a certain protocol.
Namespace collisions
The worst feature that one might encounter in Objective-C is its lack of support for namespaces. In order to minimize the chance of name collision, class names are made “unique” that is done by prefixing the class name with 2 or 3 letters. In Swift, if multiple imported modules share a member of the same name, it can be made unambiguous by prefixing it with the module name:
import FrameworkA
import FrameworkB
FrameworkA.foo()
Properties and instance variables
Swift integrates properties and instance variables into a single class-level variable declaration, putting an end to a debate among the Objective-C developers. A Swift property does not consist of a corresponding instance variable and the backing store for a property is not accessed directly. You can use explicit getters and setters for compound/derived properties. On the other hand, Swift offers property observers via the new willset and didset hooks that run before and after setting a new value.
No access control mechanisms
One striking drawback in Swift is it lacks access modifiers (public/private/protected), which hinders access to classes’ members. Presently, all code in Swift is public that does not allow proper encapsulation.
Inheritance
Most classes ultimately inherit from NSObject in Objective-C, whereas,  in Swift, this is not required. Swift supports single inheritance only, just like in Objective-C.
Initialization
In contrast to Objective-C initializers, Swift initializers do not return a value. A Swift initializer is similar to an instance method with no parameters, written using the init keyword. Every class must have at least one designated initializer.
Protocols
Protocols are highly important for low coupling between classes. Swift extends the same feature to value types as well; classes as well as enumerations and structs can all adopt protocols. Protocols are also bona-fide types and you can use them in return types and parameters.
Categories are called extensions
Objective-C categories are called as extension methods in most languages. Swift uses this same nomenclature with theextension keyword. However, the major difference is that swift extensions are not named, just like in Objective-C, making their purpose unclear.

Business benefits

Now that you had got a quick overview of the flexibility aspects of Swift programming language over Objective-C, the last leg of this blog will help you understand the core business benefits that Innovapptive had accrued by adopting Swift.
  • Reduction in development efforts by 30% by way of user friendly and simpler coding mechanism.
  • Quick roll out of applications enabling innovative iteration, while instantly responding to user requests for new capabilities.
  • Higher quality code that’s easier to maintain including related performance enhancements.
  • Minimized training and adoption efforts for developers – higher productivity within short span of time.
  • 70% reduction in bugs count – Swift won’t let you compile code with common errors.

Conclusion

From the above discussion, it certainly boils down to the fact that Swift scores high over Objective-C and incorporates modern features, inspired by more recent languages. It can be termed as a “safer” language implying that you can easily catch more errors at compile time as compared to the run time. This blog just made an attempt to cover certain basic and core features, though there are some more features that aren’t dealt in this blog. The main focus of this blog is to provide a general awareness and cultivate interest among programmers and corporates to switch over to Swift code from a technical and business perspective – generate more value to your customers.


SAP Fiori Single Sign On (SSO) Option to simplify SAP Fiori Security

The SAP Fiori Single Sign On (SSO) is a new option that is aimed to take the SAP Fiori security to the new level. The philosophy behind Fiori is to keep simple things simple. As Fiori becomes mainstream, IT teams are facing the challenge to align Fiori with existing enterprise Single Sign On (SSO) guidelines and requirements. The challenge is to keep security simple as well, without sacrificing effectiveness. Securing access to your data doesn’t have to involve cumbersome processes. You don’t have to take anything away from the positive user experience With Fiori being a desktop and mobile solution, your apps should be automatically available after just one initial user authentication at the users desktop or mobile device, with no need for further log-on procedures. How we do that while keeping sensitive data secure at all times? The authentication concept for SAP Fiori apps involves two stages:
  1. Initial authentication at the ABAP front-end server
  2. Authentication of all requests to back-end systems.
Let’s have a brief overview of what each stage is all about.
1. Initial Authentication Once a user initiates a SAP Fiori app, the launch request is sent from the client to the ABAP front-end server by the SAP Fiori launchpad. At the time of launch, the ABAP front-end server authenticates the user with one of the supported authentication and SSO mechanisms. Upon successful initial authentication on the ABAP front-end server, a security session is established between the client and the ABAP front-end server.
2. Authentication requests at the back-end systems After successful establishment of security session between the client and the ABAP front-end server, transactional apps can then send OData requests from the ABAP front end server to the ABAP back-end server. OData requests to the ABAP back-end server are then communicated securely by trusted RFC without the requirement of additional authentication. In this blog we take a high-level look at 2 options to achieve Single Sign On capability for SAP Fiori apps -
  1. SAP Fiori SSO using SAP Authenticator
  2. SAP Fiori SSO using Mocana Atlas Platform

Mobile SSO for SAP Fiori with SAP Authenticator

SAP offers “Mobile SSO” for various applications and trusted websites on mobile devices. This solution is based on Time based One-Time Password (TOTP) algorithm, which is of the open standard RFC 6238. This algorithm computes a one time pass code from a shared secret key and current time. With the respective user name and pass code, the authentication to the Identity Provider triggers IDP initiated single sign-on mechanism. For TOTP client, SAP authenticator is the mobile application, which is available for iOS and android platforms. Once you implement this solution, you will have the flexibility to use Fiori applications, bookmarked on your device after a single click. Once you click on the respective Fiori application bookmark, the SAP authenticator creates a pass code and a URL with respective parameters. Next, the SAP authenticator sends this URL to the browser, wherein the browser opens the URL that triggers the single Sign-On. On the other hand, the Identity Provider checks the entered credentials and if the authentication is successful, issues a SAML 2.0 assertion for you and for the respective service provider (SAP Fiori). In the final step that refers to the HTTP-POST binding response, the SAP Fiori application gets securely opened on your mobile device.

SAP Fiori SSO using Mocana Atlas Platform

Now that you have understood how SSL single sign on authentication works, let’s look into certain security aspects of authentication, considering that it becomes daunting and expensive to deliver secure mobile apps at an enterprise scale. In order to move up in the value chain, organizations have to think beyond the usual handful of apps by expanding access to a much broader range of high end enterprise applications.
The need of the hour is to have a single and a unified platform that empowers organizations to establish authentication securely, identify and trust relationships with applications on virtually any mobile device. That implies organizations needs a platform that makes these connections less complex to provide and at the same time, less expensive to maintain. From the above backdrop, a new security platform – Mocana Atlas™ Extended Enterprise Platform is making new inroads in this space that is a revolutionary platform aimed to simplify enterprise mobile app deployments by reducing many of the toughest security bottlenecks, plaguing large scale rollouts, while considerably minimizing mobile total cost of ownership. Mocana Atlas is deployed behind the firewall to securely connect mobile apps to back-end systems with exceptional simplicity for IT and one click access for end users across the entire extended organization.
With focus on app security, your organization can benefit complete enhanced depths of visibility into your deterministic state of the apps that define the extended enterprise, wherever these apps are present, either on managed or unmanaged devices. Organizations enjoy high levels of control – how the app is utilized and how data is accessed without compromising on end user experience. Hence, a new secured transport layer to a dedicated secure app. gateway, also called as Mocana Atlas appliance can be provided to ensure that your data is completely secured, while it travels all the way from the app. boundary to the critical back-end systems of record back at the enterprise. Mocana Atlas extended enterprise platform, along with Mocana MAP, offers new insights into the fragile links of your mobility initiatives and supports you with policies and tools to help you instantly and economically minimize those issues before they become a major threat to your business, using a single management console. Mocana Atlas works as a bridge application – it can connect existing enterprise MDM, MAM and EMM software instances from other vendors and helps your organization to leverage more out of the software you already have.
Mocana Atlas offers end-to-end security and enhanced security-posture intelligence at the point of network connection that lets your enterprise acquire new insights including a complete data protection with enhanced visibility into the mobile apps and transactions, which are transforming your networks. This application offers complete transparency to end users, providing a easy single-sign on across all MAP-protected apps.

Innovapptive’s offerings in this space

Innovapptive’s SAP-qualified rapid deployment solution (RDS) for SAP Fiori includes the new SAP Fiori apps that helps in implementation of SAP NetWeaver Gateway, SAP UI5 and one or more Fiori Apps for full productive purposes in a fixed time and fixed price. SAP Fiori apps offers a simple and easy to use consumer-grade user experience that work seamlessly across devices – desktop, tablet, or smartphone. Innovapptive’s RDS implementation for SAP Fiori streamlines your workforce immediately and brings forth instant value to your enterprise. Apart from that, RDS can help drastically minimize implementation efforts compared to a classic approach, since the base processes within the scope are neatly defined best practices and are more efficient, than defining customer specific processes.

Key takeaways of Innovapptive’s SAP Fiori RDS

  1. Simplifies the enterprise user experience - SAP® Fiori offers a collection of apps to simplify daily tasks of your business, while driving enterprise wide productivity.
  2. Provides your enterprise with instant productivity boost - Using SAP Fiori RDS, it lets your employees to complete workflow approvals, information lookups, and   self-service tasks across HR, finance, procurement, and sales more efficiently. This package starts working within weeks, and instantly mobilizes your employees, while tremendously improving your enterprise wide productivity.
  3. Bring simplicity and agility to your SAP Fiori Deployment - A fixed cost and deployment timeline for the SAP Fiori solution enables your enterprise to quickly extend the value of your ERP investments by offering instant and cost-effective method for deploying standard processes and adopting the latest innovations in mobility. A typical deployment is less than 2 weeks that helps your organization lower the total cost of ownership (TCO), speed up time to value and retain the flexibility to extend the solution.
  4. Offers flexibility and modularity - With our RDS package offering high levels of flexibility and modularity, you can quickly jump start with just one app or any combination of available 200+ Fiori apps, delivering the full business value to your enterprise in under 2 weeks.
Request a Demo
If you would like a demo of Innovapptive’s portfolio of Native or Web based mobile solutions, please click on the link. Alternatively, if you would like to discuss with an Innovapptive solution expert, you can reach out to us by emailing us at sales@innovapptive.com or you can reach a sales representative at (713) 275-1804.


Data Security for Mobile Apps – App Passcode Adds and Extra Layer of Security

Introduction

In today’s fast paced world, technology has enabled us to store your whole life on your hard drive. Computers are shrinking in their size and now with the advent of mobile technology, your mobile has become a pocket computer that can accomplish anything under the sky. This means your entire data is now mobile and can be virtually accessed from anywhere, anytime. Added to that is the emergence of mobile apps that are extensively sweeping the mobile world to let you accomplish a myriad set of transactions-right from monitoring your health patterns to paying bills at the comfort of your mobile.  However, security seems to be the biggest concern in today’s virtual world, where even the slightest imprudence in data management seems to have a major fallout on data security for mobile apps or desktop apps that might lead to loss of revenue, reputation and mental peace.
With data security assuming utmost importance, most of the apps that you might access (either on your mobile or desktop) require you to first register by providing the right authentication credentials in the form of your user name and password. This is the common industry practice followed everywhere to secure the data that you enter or store in your apps without getting bogged by issues such as data theft or password tampering.
However, one question that comes to our mind is are these security measures adequate enough to ensure the safety of one’s data? Is there any other mechanism that is much simpler to use without the necessity of typing the user name and password repeatedly? To address these questions - Innovapptive, an SAP certified solutions partner has come out with a new feature – app passcode for all its SAP certified apps, which takes security to new heights.
This concept of passcode has already been implemented for SAP Fiori solutions to protect from unauthorized access to their users’ data, Innovapptive replicated the same feature for all its apps – albeit in a modified and a simpler version.
This blog talks about this unique feature of app passcode and how it really helps a user of Innovapptive’s apps to securely work to process the required tasks.

Why app passcode?

The obvious question that comes to our mind is why passcode at the first instance? Of course, your user name and password that you type to access any app is perfectly sufficient, but still it’s not 100% fool proof. There are still ample chances of password tampering and posing the vulnerability threat, since you need to type your login credentials again and again, particularly when you are not using your app for a considerable amount of time (idle state). Also, it’s possible that an unauthorized user could access your application if they were able to obtain physical access to the device (if were lost for example, but not password protected). The app passcode is just designed to mitigate the above problems and provides a simpler extra layer of security.

What is an app passcode?

This is an additional security feature that is available for all the Innovapptive’s applications, eliminating the necessity to retype your password every time you access this app. Once you setup the default passcode, you need to type your user id and password only once and the device data vault stores this information in an encrypted stage. Until you change your password, you need to just type the data vault passcode to login to this app, as the device and the app recognizes you and uses the stored user id and password from the encrypted stage. Passcode is illustrated by an icon Passcode icon on the Login screen of all Innovapptive’s apps that lets the user to set the passcode for this app.

How it works?

Let’s take Innovapptive’s mWorklist app (Universal approval solution) as an example and see how this passcode works, including setting up an app passcode, changing an app passcode and typing an app passcode to unlock the application screens (in idle state).
The subsequent sections walks you through the series of steps for accomplishing the above listed tasks – right from setting up the passcode to changing the passcode as an end user.

Setting up the app passcode

  1. In the Log In screen, tap the Passcode icon(App Passcode) icon.
App Passcode - 1
2. In the Create DataVault Passcode! screen, type and retype your new passcode in the respective boxes and tap Create.Your new passcode gets created, enabling you to access this app.
App Passcode - 2

Logging into the application

Since you have configured the passcode for your app (as outlined in the previous section), you can proceed logging into the app by typing and submitting your login credentials (username & password) only once in the Log In screen. You need to type only the app pass code every time you access the app.

Auto lock feature

Sometimes, you might remain in an idle state (without any active transactions), even after logging into the application. In such circumstances, the application gets locked and you need to simply type and submit a passcode to unlock the application to resume with your transactions.
App Passcode - 3

Changing the app passcode

This feature offers flexibility to change the passcode configured for your app on a periodical basis to ensure that the data you transact is always safe and secure.
App Passcode - 4

Conclusion

This blog covered the app passcode feature that is used in all the Innovapptive’s SAP certified apps to provide an extra layer of security to ensure that the data accessed by various user groups from various SAP modules is 100% secure without scope of any tampering or misuse. Once you configure a passcode, you need to type your login credentials only once. This implies whenever your app gets locked in idle state, you need to just type your passcode to unlock and resume your operations. You even have the flexibility to change your passcode, whenever you desire.


 
Return to top of pageCopyright ©SAP Mobility 2019 | Template design by Privacy Policy|Disclaimer*All trademarks and copyrights remain the property of their respective owners.