smartface_cloud_enterprise_mobility

Smartface Cloud: The Next Generation of Enterprise Mobility

We are happy to announce that our next generation product Smartface Cloud is live. Smartface Cloud facilitates mobile transformation with enterprise mobility in the cloud.

You can register for free at https://cloud.smartface.io and start using it right away. No download or setup is necessary and it is free for a lifetime.

You can quickly start mobile app development in your browser with the Cloud IDE and this is just the beginning. Once you develop your app, you can manage its lifecycle end-to-end with enterprise mobility modules in Smartface Cloud.

 

With the Cloud IDE, you can develop native iOS and Android apps just with JavaScript knowledge. It works on any modern browser and on any OS. You can use the Smartface “on-device emulator” at https://smf.to/app (you need to access the link from your phone) to view your app on real iOS and Android devices instantly and wirelessly with wireless debugging on Android. Smartface Cloud Development module comes with day-one support for iOS 10 and Android 7.

For more information about Smartface Cloud, you can access the following resources:

Start using Smartface Cloud at https://cloud.smartface.io

Happy mobility,

Smartface Team.

native

Extending Smartface with Native iOS and Android Plugins

Smartface plugin interface is now open to all users, including the free Community license. Everyone can create their own native Objective-C and Java plugins for Smartface App Studio. The possibilities to extend your Smartface apps are now endless.

Smartface is a JavaScript based cross-platform native framework and it already provides a JavaScript interface to native OS components in iOS and Android. However, there might cases where you need to use a specific SDK for a specific purpose or a custom component.

Some of the examples for such cases are:

  • SDKs for different enterprise systems and frameworks for security, connectivity, etc.
  • SDKs for cloud services (you can use any cloud service with Smartface)
  • SDKs for mobile services such as analytics, in-app communication, application health monitoring, etc.
  • Custom user interface components such as animations or buttons and menus with different designs and interaction options or gesture components
  • Supporting beacons on Android (iBeacon is already supported in Smartface) or using a third party beacon framework

 

Plugin is a broad term and its definition tends to change in each platform, where they might be named as addons, extensions or components in different platforms. In Smartface, we have elected to define native plugins as any kind of native code/functionality that is implemented in Smartface with the plugin interface.

With native plugin support in Smartface, you can even implement full apps developed in Objective-C or Java.

In the lifecycle of a plugin in Smartface, there are two different phases involved.

If you are a Smartface developer who just wants to use a third party plugin, the development and packaging steps are not important for you. You may skip to the “Using the plugin” section to use any plugin just in two steps.

 

1. Native plugin development and packaging

The development and packaging are specific to each native platform and require some familiarity with the native development tools.

i. Developing iOS plugins with Objective-C:
  • Create the plugin template with the CLI tool
  • Merge your native code with the template
  • Fill in the configuration file
  • Define classes to be used in JavaScript
  • From the project files, generate the plugin file using the CLI tool

You can distribute the generated zip file, the Smartface plugin, in any way you like. For technical details on iOS plugins, you can refer to the Developing iOS (Objective-C) Plugins for Smartface guide and for a step-by-step generation of an iOS plugin, you can refer to the Hello World with iOS Plugin guide.

 

ii. Developing Android plugins with Java:
  • Download the plugin template from Smartface website
  • Put the template under Java folder in your project in the Android development environment
  • Fill in the configuration file
  • Define classes to be used in JavaScript
  • Generate the plugin file using the CLI tool
  • Build the project apk
  • From the apk, generate the plugin file using the CLI tool

You can distribute the generated zip file, the Smartface plugin, in any way you like. For technical details on Android plugins, you can refer to the Developing Android (Java) Plugins for Smartface guide and for a step-by-step generation of an Android plugin, you can refer to the Hello World with Android Plugin guide.

 

 2. Using the plugin in Smartface (JavaScript development)

It is very easy to implement any native plugin in Smartface just in two steps.

  • Get the plugin file from the developer and put it inside the Data->Plugins folder in your project structure
  • Activate the plugin in Project Details->Plugins section in Smartface IDE

You may refer to the Smartface Plugin guide for technical information.

 

Also, please note that with this plugin update, there are changes in the implementations of the third party plugins already available in Smartface. Now, they are presented as third party plugins as well.

You may refer to the guides section for more information about the changed components and you can visit the Smartface Developer Center for more native iOS and Android development resources. For updates, you can follow us on Twitter @smartface_io

With plugins, you can utilize any iOS and Android native code, component and SDK in Smartface to develop native apps just with JavaScript.

Download Smartface now and start native iOS and Android development!

smartface

Smartface Architecture for Native iOS and Android Development with Single JavaScript Codebase

Smartface is a native cross-platform JavaScript interpreter framework for iOS and Android. The framework consists of two main elements: Run-Time Engine and Desktop IDE. The IDE is Windows-based and has no dependency on Mac for iOS testing and debugging, meaning that whole iOS development can be done on Windows. Run-time engine is explained below in more detail.

  1. Overview of the Architecture
  2. Run-time Package
  3. Interaction
  4. Security
  5. Extensibility
  6. Performance
  7. Stability
  8. JavaScript Compatibility
  9. Connectivity

 

1. Overview of the Architecture

Smartface run-time engine is built upon a single Core, which is common across platforms:

Smartface Architecture Diagram

Smartface Architecture Diagram

1.1. Smartface Core

Smartface is shaped around the Core. It is written in C++ and is used across all platforms.

This Core contains the main logic of the engine, such as event triggering, encryption & decryption, data relay & translation between other modules.

Every JavaScript object or method that interacts with native objects first interacts with the Core, which in turn updates the native object via the platform specific bridge. This abstraction model in the Core ensures single codebase development in Smartface.

1.2. Native OS Layer

In each platform, native objects such as Label, Editbox (textbox) are provided. Each OS platform provides bindings for the native objects written in the native development language of the platform: Objective-C for iOS and Java for Android. OS specific behaviors are implemented at this level.

1.3. Android and iOS Bridges

The OS Bridge establishes communication, translation and wrapping between native objects and the Smartface Core. The bridge is developed in C++ and is customized for each OS based on the needs of the native environment.

1.4. SQLite

SQLite engine is used as the built-in database within the application.

1.5. Curl

Curl is the library used for network communication in Smartface, it is used both in iOS and Android.

1.6. JavaScript Engine

JavaScriptCore a part of the open source WebKit Browser engine is used across all platforms. This ensures the compatibility of JavaScript features between each platform. This engine is customized with remote debugging features.

1.7. Core Plugins

There are a number of built-in plugins shipped with the platform. These plugins have core level integration, which enables them to be bound as native objects, such as AdMob. Additional plugins can also be added with the upcoming plugin support.

2. Run-time Package

Run-time engine is precompiled targeting the OS. Smartface iOS Runtime and Smartface Android Runtime have their own separate runtime implementations. Android also has two runtime options based on CPU architecture: ARM & Intel (x86).

Smartface Native iOS and Android Runtime  Packages

Smartface Native iOS and Android Runtime Packages

 

When a project is ready, it can be published from the IDE. This generates an APK file for Android, and an Xcode project in a zip file for iOS. Smartface runtime is precompiled; packaged by IDE with project files and plugins to be delivered to device.

 

Smartface Project Package

Smartface Project Package

Static project data & info is an XML data, converted to binary format on IDE to be parsed faster on runtime. This data consists of static objects, database schema and project info. Static objects are the objects designed on the IDE: UI, Network, DataSets and DataTables. If an object is declared within JavaScript code, then it is referred to as a Dynamic object.

Plug-ins are also pre-compiled and ready to be shipped out of the box.

3. Interaction

When an app developed by Smartface is published by the IDE, and Android APK file or an iOS Xcode project is generated.

After app is deployed and ready to run, it is executed as explained in the Smartface App Execution Flow.

There is an important thing to notice, every static object is loaded to the memory during startup, and dynamic objects are loaded when code calls for it.

In the JavaScript example below, there are static objects in Page1, TextButton1 and Label1. TextButton onPressed event is mapped to function Page1_TextButton1_OnPressed. When a user clicks the button to set the text of the label as given by the code below, following steps are executed:

function Page1_TextButton1_OnPressed(e) {
     Pages.Page1.Label1.text = "hello world";
}
  1. JavaScript engine accesses to Pages object, which resides in Core
  2. JavaScript engine gets Page1 property of Pages which resides in Core
  3. JavaScript engine gets Label1 property of Page1 which resides in Core
  4. JavaScript engine sets text property value of Label1 which resides in Core. While setting this value, before returning to the JavaScript Engine, Core performs following operations:
    1. Core access the native Label object through bridge.
    2. Updates the value in UI
    3. Returns to the JavaScript engine to proceed with next line. In this case, both Core and UI has the copy of the value.

 

While getting values from objects, execution occurs in the following way for the code shown below:

function Page1_TextButton2_OnPressed(e) {
alert(Pages.Page1.Label1.text);
}
  1. JavaScript engine accesses to Label with same steps explained above
  2. JavaScript engine gets value from the Core. The Core does not retrieve this value from an UI object, it directly returns the value from the value stored in the Core.

 

4. Security

Compiled C++ and Objective-C codes and obfuscated Java code hardens Smartface engine for reverse engineering.

Binary data and JavaScript code of the project are encrypted.

The Core provides easy-to-use encryption facilities to encrypt the database for security. Smartface also comes built-in with security plugins from different security providers.

Built-in level encryption keys are generated dynamically by the IDE during publishing process, this encryption key is retrieved by the master key within Smartface. This hardens the stored data against known text attacks.

5. Extensibility

Smartface is an extensible framework and third party native libraries can be added as plugins.

This integration can be done in several levels of integration between Core and Native OS level.

Some plugins are shipped with Smartface App Studio and some of them are obtained separately from external sources. Shipped plug-ins are part of the run-time engine and IDE does not add them separately during publishing process except AdMob for iOS. The other plugins are precompiled and added to the app package by the IDE during publishing. Presence of these plugins is checked by engine during runtime and feature support is managed accordingly.

6. Performance

Smartface core is developed in C++ for iOS and Android and the architecture is designed to minimize the performance loss.

There might be a performance loss up to 3%. However, this performance difference is not noticeable unless milliseconds are critical for an app.

7. Stability

Smartface Engine takes care of memory optimization; UI rich components are implemented with their memory usage optimized.

Since the framework is a product of 4 years of intensive testing, device-specific issues are addressed and solved within the framework.

For multi-threaded implementations, Smartface Engine itself takes care of thread synchronization and internal data transfer.

8. JavaScript Compatibility

Smartface supports plain pure JavaScript; it has no parts of HTML or DOM. The engine is taken out of WebKit, and stripped out everything except the JavaScript engine.

The engine is ECMAScript 5 compatible. Same compatible engine and version is used both in iOS and Android to ensure the highest compatibility of JavaScript features in both environments.

Built-in JavaScript engine of WebKit does not include remote debugging protocol and debugging features. JavaScript engine is extended with remote debugging features, enabling JavaScript debugging from IDE both in iOS & Android with full debugging features.

9. Connectivity

Smartface has built-in web socket client support. Any application developed using Smartface can consume any web services without any problem, such as Restful, SOAP and OData services. This web socket client architecture is built on Curl. Curl is a very popular and stable cross-platform connectivity library, which eliminates the behavioral differences between iOS & Android.

Any mobile app can call the app developed with Smartface in a bidirectional way with passing data to and from it.

Apps developed with Smartface can register for receiving push notifications for iOS and Android. Using push notifications, apps can receive push data.

iOS Framework also has support for iBeacon, it can receive data from iBeacon source and estimate proximity.

 

With its superior architecture, Smartface enables you to develop native iOS and Android apps with a single JavaScript codebase. Download Smartface now and start developing mobile apps right now!

15 Frequently Asked Questions about Smartface

Here we present you the 15 most frequently asked questions about Smartface from our community and from our enterprise customers. You can find answers to business-related and technical questions.

 

  1. What kind of mobile applications can you develop with Smartface?
  2. Why should I choose Smartface?
  3. How do you handle operating system and device differences and fragmentation?
  4. How do you support new operating system versions?
  5. How does Smartface work? Could you provide more information on the architecture of Smartface? Is Smartface open source?
  6. Since Smartface is an interpreter framework, would it be possible to update the source code of the application on the fly by downloading it from an external source during runtime?
  7. Are there any performance differences between apps developed with Smartface and apps developed with Objective-C/Swift/Java?
  8. Are there any app size differences between apps developed with Smartface and apps developed with Objective-C/Swift/Java?
  9. What if a device/OS feature is not available in Smartface?
  10. Can I use different JavaScript libraries in Smartface?
  11. Can Smartface do everything a hybrid platform is capable of?
  12. There are many open-source resources for platform-based development. Is it possible to use these in Smartface?
  13. How secure is an application developed with Smartface?
  14. How do you provide the native experience with single codebase in Smartface?
  15. How is memory management handled in Smartface?

 


  1. What kind of mobile applications can you develop with Smartface?

Smartface is a flexible platform and you can develop almost any kind of general-purpose apps for any form factor for iOS and Android, including highly complex apps such as mobile banking or m-commerce.

There are two types of apps that Smartface is not suitable for: games requiring advanced processing and specific-purpose utility apps requiring system-level access such as memory optimizers or battery life managers.

 

  1. Why should I choose Smartface?

The main focus of Smartface is productivity. Cross-platform native development with Smartface is around 4 times more productive than platform-based native (Obj-C, Java) development. You can see even more reasons why to choose Smartface in our Why Smartface page.

 

  1. How do you handle operating system and device differences and fragmentation?

Smartface release cycle consists of 4 major version updates in a year as well as periodic minor updates. Besides introduction of new features in each release, necessary backward and forward compatibility changes are provided. (e.g. support for new CPU architectures such as iOS 64-bit or OS-level changes such as keyboard handling)

To minimize the impact of OS updates on developers, the change processes is handled by Smartface as much as possible. In case of changes that will affect the projects, the developers are informed with the release notes. (e.g. deprecated features)

Smartface closely tracks upcoming iOS and Android operating system updates and plans the major releases based on the release timings of GM or public release of new operating system versions.

For developers, it is sufficient to update their projects to the latest version of Smartface for their apps to support the latest operating system versions, reducing the operational costs required for operating system version migration.

 

  1. How do you support new operating system versions?

As soon as a new iOS or Android release is open for testing, Smartface updates the framework in accordance with these new releases. As one of the benefits of the Smartface enterprise license, Smartface beta releases are instantly accessible by Smartface enterprise customers.

When the new iOS or Android version is released publicly, new version of Smartface is released to the community in parallel.

 

  1. How does Smartface work? Could you provide more information on the architecture of Smartface? Is Smartface open source?

Smartface is an interpreter framework. The objects developed in design time are optimized and converted into native components during runtime. You can refer to the Smartface architecture document for more information.

Enterprises can request access to Smartface source code with specific agreements. With special training and agreements, enterprises can also develop native C++ plugins in our core.

 

  1. Since Smartface is an interpreter framework, would it be possible to update the source code of the application on the fly by downloading it from an external source during runtime?

As an interpreter framework, Smartface processes the code during runtime; therefore, it is not necessary to include all JavaScript codes in the project. Even the full native app can be downloaded from a server, which is something that cannot be done with the platform-based native frameworks (Obj-C, Java).

Technically, there is no limitation on this way of working and for B2B apps that are distributed with enterprise distribution, it is preferred. However due to App Store restrictions, the critical path of a B2C app must be coded inside the app and code updates are recommended to be done only up to a certain extent.

 

  1. Are there any performance differences between apps developed with Smartface and apps developed with Objective-C/Swift/Java?

Smartface core is developed in C++ for iOS and Android and the architecture is designed to minimize the performance loss. There might be a performance loss up to 3%. However, this performance difference is not noticeable unless milliseconds are critical for an app.

 

  1. Are there any app size differences between apps developed with Smartface and apps developed with Objective-C/Swift/Java?

The framework Smartface uses during runtime has a fixed overhead. Therefore, even if in a “Hello World” application, the app size cannot be smaller than the framework size. As the number of screens in an app does increase, with 20 screens or more, this difference is negligible; or with 40 screen or more, it uses less size compared to native apps, depending on the implementation.

 

  1. What if a device/OS feature is not available in Smartface?

Smartface supports most of the functionalities available in iOS and Android operating systems. If there is a specific functionality you would specifically like to check before starting your project, you can search it in the API docs or ask Smartface community on Stack Overflow.

If a feature is not yet available, you can check our roadmap for more information if it will be implemented. Regardless of the roadmap, enterprise customers can request additional features, which they can get as plugins or patches.

For the community developers, the recommended solution is to implement additional features as plugins. Any objective-C or Java code can be added as a plugin to Smartface and can be mapped to JavaScript commands to be used in your projects.

 

  1. Can I use different JavaScript libraries in Smartface?

Smartface supports JavaScript fully, however it is a native framework and it does not have DOM support. Therefore, any JavaScript library that does not contain a DOM implementation can be used within Smartface directly.

 

  1. Smartface is native but can it do everything a hybrid platform is capable of?

Although we recommend you to take advantage of quick and easy native development with Smartface; Smartface offers the flexibility of developing apps in a hybrid structure with the WebView component. You can refer to the WebView guide for more information and the differences between native Smartface and hybrid platforms.

 

  1. There are many open-source resources for platform-based development. Is it possible to use these in Smartface?

With the plugin support, any objective-C or Java code can be used in Smartface, but we recommend checking the Smartface API docs first. Among the hundreds of apps developed with Smartface, it is highly likely that a similar implementation has already been done.

You can also ask the Smartface community on Stack Overflow for detailed use cases. Moreover, Smartface plugin market will open soon, allowing developers to share their work.

 

  1. How secure is an application developed with Smartface?

We take security concerns seriously and implemented measures to protect the code as well as the application data with built-in security features. As a result, financial institutions feel comfortable in using our solution for developing apps like mobile banking and mobile authentication.

Core of the app is written in C++ and it cannot be decompiled and for JavaScript, code obfuscation is used to protect from decompiling. For advanced security features, Smartface supports Kobil and Vasco solutions out of the box. You may refer to our security guide for securing your app in Smartface.

 

  1. How do you provide the native experience with single codebase in Smartface?

The architecture of Smartface ensures the native experience as the objects developed in design time are optimized and converted into native components during runtime with the JavaScript wrappings for native UI and components for each platform. The engine itself uses shared native C++ code for iOS and Android with bridge architecture.

For differentiating features, we check each feature in iOS and Android and when a feature is only available in one platform, it is overridden if it doesn’t fit that platform or it is duplicated with a custom implementation, if it has the potential to affect the experience.

 

  1. How is memory management handled in Smartface?

Memory management and concurrency management is handled at the platform level, so you don’t need to worry about it during development. You can refer to the Memory Management in Smartface and Memory Management with Dynamic Objects articles detailing the memory management in Smartface:

 

If you have another question that is not answered here, you can contact us.

The community version of Smartface is free with all features. You can download Smartface now and try it yourself.

versus

Smartface App Studio vs. Xamarin (Cross-Platform Native Frameworks)

The objective of Smartface is to make native app development accessible to masses without sacrificing quality. At every opportunity, we emphasize the importance of “real native” quality and performance and that makes “real natives” win over “like-native” hybrid frameworks like Phonegap, Cordova, etc.

Unlike hybrid frameworks, most of which are just the fork of a single product, huge amount of effort is required to create cross-platform native frameworks. Therefore, there are only a handful of cross-platform frameworks that produce real native output.

While all cross-platform native products are praiseworthy, Smartface is here to make cross-platform native development even more appealing and in this article, we would like to explain you the main differences between Smartface and Xamarin. You can also view our comparison with Appcelerator Titanium.

Platform Based Native Xamarin Smartface App Studio
Output Native Native Native
Development Environment Xcode, Eclipse Xamarin Studio or Visual Studio Smartface IDE
WYSIWYG Design Editor iOS: Yes, Android: Partially Partially with “Designer”s Yes
Code Based Design Editor Yes Yes Yes
iOS Development on Windows No No (Workaround available with a Mac on network) Yes
Single Code Base No Only for “Xamarin.Forms” projects (Not free) Yes
Supported Platform iOS or Android Cross-platform iOS, Android, Windows Phone Cross-platform iOS, Android
Development Language Objective-C, Swift, Java C# JavaScript
Adaptation Mobile know-how Specific C# know-how Web know-how
Look and Feel, Sense, UX Native Native Native
UI Responsiveness Smooth Smooth Smooth
Performance Fastest Faster Faster
Extend with custom plug-ins Yes Yes on Roadmap
Community Largest Large Medium
Technical Support Community Community &Inexpensive license packages sufficient for direct support Community & Inexpensive license packages sufficient for direct support
Stability Highest Higher Higher
Security Most secure Secure Most secure (also includes advanced features)
Risk Learning Cost, Operational Cost Dependency Dependency

 

Xamarin offers a different approach to cross-platform native development compared to Smartface and Titanium. It is C# based and unlike JavaScript based Smartface apps, whose code are interpreted at runtime, Xamarin apps are complied.

Therefore, primary differences between Smartface and Xamarin stem from the differences between C# programming and JavaScript programming.

They both produce native output for iOS and Android. Xamarin can also produce Windows Phone output. Yet, because of compiler and interpreter differences, binary sizes are smaller in Xamarin for small projects, but as the projects get larger, the interpreter overhead in Smartface eliminates repetition and binary sizes are smaller in Smartface for larger projects. A related advantage of interpreter structure of Smartface is that it is possible to run JavaScript files from the server. Therefore, app updates can be applied without submitting a new version of the app to the stores. A similar feature is available in hybrid apps, but they are just webpages. Smartface allows this for native apps and this is not possible for platform-based native apps and Xamarin.

The advantage of C# projects over JavaScript projects is that due to the structure of the languages, code checking before build and AutoComplete works more accurately along with XAML support.

Another thing to note is that until recently, Xamarin did not have a single code based offering. It was required to code separately for each platform. For standard Xamarin projects, this is still the case, but there is a new offering called Xamarin.Forms, which allows single code based apps for a specified set of UI controls. It produces high quality native output but its flexibility is yet to be seen (the components are currently limited) and it is not free. Similarly, Xamarin licenses must be obtained separately for each native platform, making costs higher than it initially seems.

Smartface is fully single code based, including the free community edition and the license models are independent of the native platform.

Both platforms have their own IDEs. The advantage of Xamarin is that besides its own Xamarin Studio, it has Visual Studio support and this is an important advantage for target audience of C# developers. However, this is again a paid feature and application design is difficult in Xamarin compared to Smartface.

Smartface is the only cross-platform native framework with a WYSIWYG (What You See Is What You Get) design editor. In Xamarin, you are forced to code your user interface. In Smartface, you may choose to design your app either with drag and drop components, with code or with a combination of both. Xamarin has platform-specific “designer” tools for visual design of apps, but it is not directly translated into working apps. In Smartface, your design appears on any phone/tablet as exactly as you see it on the visual editor.

Moreover, Xamarin does not support iOS development on Windows nor iOS emulator or debugger. If you have a Mac in the same network, you can use Windows to develop iOS apps in Xamarin, but it does not eliminate the need for a Mac and setup over network may be an issue in some network configurations. Smartface is the only cross-platform native framework that supports whole iOS development cycle on Windows.

One advantage of Xamarin is the support for plug-ins to extend you project with native code. This feature will be available in Smartface soon.

Xamarin community is much larger than Smartface community is, but the target audiences are completely different. JavaScript is a more widely known language than C# and it is easier to learn. Therefore, Xamarin is more exclusive than Smartface. Although C# is popular among specific developer groups, it is not as common as JavaScript and might introduce a dependency on expensive Microsoft products, so the potential size of the community is rather limited compared to Smartface and Titanium. For developing with Smartface, web know-how is sufficient, so the potential community is much larger without any dependency on expensive technologies.

Both platforms are highly stable. Smartface cross-platform native framework was developed in closed beta for a long time before making sure that it is almost as stable as the platform-based native frameworks themselves.

We trust our product and there are no app feature limitations in free community edition of Smartface. You can develop fully featured apps with no size or platform limitations, the only requirements are the fixed bundle names and the splash screen, both of which do not affect the functionality of an application. The free edition of Xamarin has app size and feature limitations. Since you cannot predict exactly how large your app may become, you may hit this limit just in the middle of your development, forcing you to upgrade to a paid package. Similarly, in the free edition of Xamarin, you cannot develop with a single code base, so you need to pay first to try the single code base offering.

The free edition of Smartface is free with no strings attached. You can start with the free package that have no app feature limitations whatsoever and you can upgrade to inexpensive packages for direct support.

Therefore, while choosing a cross-platform native framework, we recommend you to consider not just the popularity of the framework, but the flexibility and licensing models as well. We suggest that, with the features that are not available in other frameworks, Smartface is the better choice.

You can check Smartface App Studio benefits and download it free without any feature or app size limitations.

smartface-hybrid

Smartface App Studio vs. PhoneGap/Sencha/Cordova (Cross-Platform Native vs. Hybrid Environments)

 

In today’s all-accessible world, your customers are not comparing your app with just another random app. In terms of user experience and design, you are competing with the likes of Facebook, Twitter, LinkedIn and Tinder.

We think that end-users and some of the developers are confused about platform based native (Smartface App Studio) vs. hybrid (PhoneGap/Sencha/Cordova) mobile development frameworks. We would like to explain you the differences between various types of development environments.

Hybrid and cross-platform native environments may sound similar at a first glance, but there are many critical differences in terms of the output. Smartface and PhoneGap provide completely different approaches to mobile development.

Platform Based Native PhoneGap / Cordova Smartface App Studio
Output Native Hybrid Native
Development Environment Xcode, Eclipse Jetbrain Webstorm, Sublime Text, Intel XDK, Eclipse Smartface IDE
Mac Required for iOS Testing and Debugging Yes Yes No
Single Code Base No Yes Yes
Supported Platform iOS or Android Cross-platform Cross-platform
Development Language Objective-C, Java HTML5/JavaScript/CSS JavaScript
Adaptation Mobile know-how Web know-how Web know-how
Look and Feel, Sense, UX Native Native-like Native
UI Responsiveness Smooth Not smooth Smooth
Performance Fastest Fast Enough Faster
Device Sensors Yes Needs plug-in Yes
Offline Storage Device storage Limited device storage and shared web storage Device Storage
Connectivity Online and offline usage Online and offline usage Online and offline usage
Security Most secure Depends on tech Most secure
Device Specific Features Yes Depends on tech Yes
Risk Learning Cost, Operational Cost Handling Browser Compatibility issues Dependency

Hybrid platforms like PhoneGap/Cordoba are mostly web-based, only their containers are native, so the development approach and the end products are very similar to web pages/web apps. Therefore, hybrid apps usually struggle to establish the smooth and slick usability of native apps. You can develop and deploy your hybrid app to multiple platforms easily but the app would not carry the feeling of being “at home” in any platform.

The only advantage of using a hybrid app over a web app is to get access to most commonly used device features such as camera or contacts. However, access to advanced device features or interaction with other apps requires native development, which completely eliminates the advantage of hybrid platforms.

On the other hand, cross-platform native environments such as Smartface provide real native output and native access to device functions by utilizing the same level of JavaScript knowledge required to develop apps on PhoneGap. The only disadvantage of such development environments is the number of supported platforms. Smartface supports iOS and Android and they cover more than 90% of the mobile OS market.

Moreover, Smartface App Studio already contains webviews. Therefore, if you want to develop HTML 5 based apps, you can still use Smartface and have a better development experience in terms of native function access and user support. Hybrid environments like PhoneGap are not exactly comparable with native environments like Smartface. PhoneGap contains only a subset of functionalities available in Smartface.

Hybrid (PhoneGap/Cordova) environments may seem appealing for starters but eventually, the limitations start to annoy developers and there are many cases of costly shifts from hybrid to native or cross-platform native (Smartface App Studio).

The chosen approach could vary according to project needs and company strategies. We suggest that for the companies that the productivity matter most, Smartface is the better choice over PhoneGap.

You can check Smartface App Studio benefits and download it free

@smartface_io team

10_most_common_security_mistakes

10 Most Common App Security Mistakes

Why Mobile App Security?

App security mistakes for Android and iPhone are generally a lesser prioritized area for a mobile developer, mostly because due to the time pressure. It does not usually get what it deserves in project plans. Moreover, in case of absence of a security owner in project teams, no one claims responsibility. That’s why mobile app security is a matter of attention left only to the developer’s initiative.

Security and Usability are two concepts that are inversely related. Highly secure solutions require additional processes and flows. However, most business units, working directly with consumers, don’t consider app security as the first priority.

In practice, nobody brings out a security concern unless something really goes wrong in case of “hacking”. Most application developers are not taking care of specific Android security and iPhone security tests. (Application Security Test).

Always keep in mind the principle that No app is %100 safe!

icloud-security-risk-1024x426

What Should You Do for App Security?

Our purpose is to make your app more secure than others by using quick and simple features, hence discouraging the hackers to mess with your mobile application. Make your app ready for mobile security. Here are the 10 Most Common App Security Mistakes:

1. Data Store Approach: First of all, sensitive data should not be stored on the device during runtime as much as possible. Data can be processed in case of need and should be deleted immediately when not needed. In case of a data storage need on the mobile device, data should be encrypted and stored in the documents folder. Passwords should be stored in KeyChain for iOS and KeyStore for Android security. This is also important for app store security checks.

2. Missing front-end validation: Missing data entry validation causes both security and formatting issues. These may be things like letting alphanumeric values in numeric fields, missing masking on formatted fields, not checking for high risk character values such as <>` ” ()|#. Such missing validations may cause security breaches by allowing remote code execution or unexpected responses.

3. Server Based Controls: Application development is a client side operation. Server side is the place where you should store and manage the data. Server side checks should be applied regardless of channel (mobile, web, etc…) for data security and formatting. We do not mean iCloud keychain or a similar feature, please take care. This is about the app-specific backend security. There are also security concerns for Apple iCloud, however this is Apple’s work to do it more secure!

4. SSL: HTTPS must be used for secure transmission of sensitive information. If possible, a custom certificate should be used instead of the certificates from the built-in device certificate store. The certificate that is unique to the app and the server should be embedded inside the app.

5. Obfuscation: It is very important especially for Android apps to go through obfuscation. If script files are also used in parts of the app, these files should be taken through obfuscation as well.

6. Comment Lines: Explanatory data, included as comment lines may be viewed by others if the application is decompiled. This is very simple but a common mistake both for Android and iOS apps. This does not mean that you shouldn’t use comments during app development, just don’t forget to remove them from the production version of your app.

7. Excessive Permissions: When editing permission preferences for Android apps, only the permissions that are absolutely needed should be enabled. Permissions with access to personal information, such as “access to contacts”, should be avoided as much as possible for Android security. If anything goes wrong, there is less chance of a data breach.

8. Encryption: The key used in encryption should also be encrypted and stored in secure storage. The installation file should also be obfuscated. Another dangerous practice that should avoided is the downloading of the encryption key from server during runtime.

9. Rooted/Jailbroken Devices: It is not possible to store totally secure data in rooted devices as root permissions provide unlimited access to the device filesystem and memory. However, it is possible for developers to check if the device is rooted or not. This risk should be noted and evaluated based on project scope for all flows and processes.

10. Application Tampering Protection: The application binary files (.apk or .ipa) can be altered and published in different markets by hackers. They may inject malicious code in your app or they may crack mobile apps to bypass license and payment restrictions. Nowadays it’s even possible to crack in-app purchases and license checks just by emulating app store responses. Therefore, application integrity and in-app purchases should be checked with a third-party trusted server to prevent such cases. For this purpose, there are some good solutions available in the market. Again, this is very critical for Google Play and iTunes App Store security.

app_security

If you are developing your app with a Platform-Based Approach (Obj-C, Swift, Java) the items above should be managed entirely by yourself or your team. However, if you’re using a cross-platform native framework approach, most of the items above are covered by the mobile development framework for mobile app security.

We especially suggest you to use cross-platform native frameworks for mobile security industry. You may have already faced the well-known risks of cross-platform hybrid frameworks, such as DOM Payload, Scripting Engine Scope, etc. You can assess security capabilities of the Smartface Native Framework with the information from the link below:

 

–    Security in smartface.io

 

 

If you want to develop native iOS and Android apps with one of the most secure native app development environments, just click the link below to get it free:

Download Smartface App Studio and iOS emulator on Windows PC!

 

Happy and secure coding 🙂

@osmancelik
CTO, Smartface Inc.

wysiwyg

WYSIWYG (What You See Is What You Get) Design Editor

WYSIWYG Design Editor is the most powerful aspect of the Smartface App Studio. When you design your application’s UI (screens, pages, dialogs, etc…), you can use advanced design rules such as anchor, dp, percent or px etc. Different layouts, such as absolute, linear, flow layouts can also be used for contain type objects.

Download Smartface App Studio and get WYSIWYG Design editor right now!

Designing interface is very fast and responsive so you can quickly apply what you imagine in a few minutes. Even designing advanced screens can be tuned from Design Palette. When you finish your design, you can preview your screen on different devices by easily changing preview screen for a numerous different devices. Device definitions are kept in an xml file, so you can easily define your own device to preview in the design area. I can continue with numerous features on Design Editor but this is an issue for a whole new article. Now, I want to proceed with something new.

Many design experts can say that “What you see is What you get is an utopia for mobile”. We know that it might be impossible to achieve 100% but we are working in a strong way to develop new features on it and I can proudly say that we are releasing new exciting features to you.

The main problem is that PC monitors and mobile device screens have different dynamics. Drawing 100px on PC might be equal to draw a 1000px on your mobile device. Even the PC monitors are not drawing the same screen identically. This is mostly because of monitors or screens having various pixel size, pixel ratio and density.

For example, iPhone 5 is 326 ppi (pixel per inches) and your PC screen is approximately 120 ppi (for a 15.6 monitor). Which means, if you want to preview iPhone 5 default screen’ image on Smartface App Studio, you expect to see your image size 640/120 = 5.3 inches (~13.5 cm).

url1_ios-300x163

 

It is far from the real device screen. You hardly see iPhone 5 screen horizontally and you can’t cover the whole design area, you have to scroll down to see rest of the screen. What if you work on an iPad Air?

ipadairscreen-300x168

 

To solve this problem in Smartface App Studio, we make all calculations in the background for you, understand your PC screen properties and resize everything with your selected mobile profile device screen. Of course we lose some visual information while resizing, but be sure that it is not much more that when you resize it on another program. It is an option to preview in real size, so if you want to see more details you can see the original PC size with one click.

visual-editor-300x140

This feature brings us improved reliability in visual editor for “WYSIWYG” and we know we can do better for you. Keep watching us.

emulator2

iOS and Android Emulator on Windows

Developing a mobile application with a platform-based approach (Java and Objective-C/Swift) is not as easy as it looks. There are so many details one needs to consider like platforms, screen technologies, OS versions etc. To avoid these problems, many companies and developers are now using Cross-Platform Mobile Application Development Platforms. Nowadays, Cross-Platform solutions are chosen by 5 of the Top 10 Fortune 500 companies. Gartner estimates that more than 75% of the enterprises will use at least one mobile application development platform by 2020.

 

 

Main part of the development process requires adaptation of the application to different screen sizes and resolutions on different devices, just like the different screen sizes of iPhone 4/4S (3.5″), iPhone 5/5S (4″), iPhone 6S/7 (4.7″) and iPhone 6S/7 Plus (5.5″). It’s a well-known fact that virtual device emulators and simulators are very slow on many platforms (like Android). Hence, the real product may appear different on real devices than it appears on virtual emulators in many cases. Moreover, network operations may present different cases on real devices. For instance, Xcode uses an iOS simuator for performance, but as the name indicates, it’s just a simulator, not a real device emulator like Smartface iOS emulator. Thus, most of the developers choose real devices for testing. It might look OK at first glance, but what about iOS development on a Cross-Platform solution?

Due to Apple’s restrictions and the limitation of some Cross-Platform technologies, there are no solutions other than Smartface that support iOS development on a Windows or Linux machine. Other frameworks either don’t support iOS development on Windows at all or they can’t publish or emulate apps on an iOS device without a Mac. This is a big handicap for Cross-Platform development.

Smartface makes it easy to develop for iOS and Android on Windows with a new perspective for developing applications on Cross-Platform technologies. Smartface allows you to emulate your iOS and Android application on a Windows PC with a single click.

Smartface Android and iOS device emulator button

Smartface Device Emulator button: You can emulate your application and preview it with a single click

To emulate your application on any iOS device, like an iPad emulator or an iPhone emulator, download Smartface app from the iOS App Store and connect your iOS device to your Windows machine. Make sure you have iTunes installed for your PC to recognize your Apple device and then start developing a native application with Smartface. For the Android case, just set Android SDK path in your project settings in Smartface and click OK. It quickly generates the files in less than a minute and deploy it to the device. You can use a virtual Android device as well.

Android and iOS emulator on Windows with Smartface

Smartface WYSIWYG design editor on Windows and same output running on Android and iOS emulators.

 

Android emulation is already known but you might wonder how emulation works on iOS. The main idea stems from the approach “if iTunes does it, why can’t we?” and we got to work on the solution. Now, we proudly introduce a brand new perspective about it. Moreover, it’s not just an emulator, it also functions as an Android and iOS debugger on Windows. Therefore, you can debug your apps with full debugging features such as breakpoints, watches and real-time code changes.

We are doing everything we can do to make sure the emulation is the same as real deployment process. You can be confident about everything being exactly the same as you developed and it only takes a few seconds to see your application in action. That’s why we named our helper app as “Smartface in Action”.

We will be introducing other cool ideas about mobile app development in the near future and keep yourself ready to hear new cool stuff from us. Stay tuned!

Please note that these “on-device emulators” are for development purposes and they only work with apps developed with Smartface. They require a real device as the name implies.

Therefore, apps downloaded from the App Store (such as iMessage, Garage Band, Snapchat, Clash of Clans, etc.) will not work with Smartface on-device emulators. Since you need a real device, you can always download those apps directly to your device.

why

Why Smartface App Studio?

We asked ourselves why people like to use Smartface App Studio? Developers or project managers, would like to develop your exciting projects with us. Starting from this question, we will outline your benefits of developing with Smartface App Studio.

 

fastIt will be FAST and EFFICIENT

  • WYSIWYG design editor: “What You See Is What You Get” design editor allows you to get %99 of what you’ve designed on your device runtime. In addition, rule-based structure of IDE supports same experience for multiple devices.
  • JavaScript code editor: You have %100 JavaScript supported code editor for you to explore your JavaScript skills.
  • On Device Emulator: Plug your device (iOS and Android) via usb and see what you’re developing right away.

 

It will be EASY and READY to USE

  • Memory Management: You really don’t need to think for the problems related to memory management. We’re always handling such challenges for you.
  • Network Components Wizards (SOAP, JSON…): Smartface App Studio’s ‘Web Service’ and ‘Web Client’ wizards are ready for you to integrate your network services into your app.
  • Ready to Use Libraries (Animation, Security, Capturing…): We have already integrated and shared many custom libraries for you to take advantage of third party solutions. We love the community.

testing

TESTING is not a nightmare

  • Single Code Based: Different test scenarios for multiple channels and operating systems are over! Since you will be responsible for only single-code, you just need logic tests.
  • On Device Debugging: Plug your device (iOS and Android) via usb and test & debug your app in real time.

 

COMPATIBILITY is what we breath

  • Device Specific Features may cause some bugs or even a specific versions to get affected.  When using Smartface app studio, this won’t be a problem for you because Smartface App Studio detects all these device specific issues and provides you bug free solutions with new setup.

 

  • We believe new OS updates are not the cause of fragmentation problems. When Smartface App Studio is used, you just need to open your project with the latest set up in the event that Apple and Google releases new iOS versions.

 

Enjoy platform’s FLEXIBILITY

  • Plug-In: You may write your own plug-ins and add components to integrate them into Smartface App Studio to extend your project.
  • The Power of JavaScript: Use JavaScript with all aspects of WebKit playground.

key

Your app is SECURE

  • Customized JavaScript (JS) Engine inside: We do not use common JS Engine. We developed our own proprietary JS Engine by integrating numerous advanced security libraries.
  •  Certified by Symantec: Security of Smartface App Studio has been tested and certified by Symantec.

 

Project Management

  • Yes, it is NATIVE and Cross-Platform: Smartface App Studio provides you native outputs for iOS and Android, which will  decrease your costs associated with development, testing and project management by nearly %50 percent.
  • Required Basic Knowledge: Mobile development is complex itself. Managing multiple platforms and products are even more complex.
  • Keep Moving: Smartface is ready for newer technologies such as wearables. Are you ready?

 

We believe the speed and efficiency of your mobile project development  will certainly increase with all these benefits and features described above.

 

Can’t Dos

  • No game, no utilities: We do not recommend developing games and utilities with Smartface App Studio.
  • Some apps need enhanced know-how: Like all frameworks, Smartface App Studio needs qualified developers to show their skills on complex apps.
  • Not many apps developed by Smartface App Studio: Smartface App Studio is being developed for the past 3 years and we just introduced it to the community in January 2014.
  • Mac and Linux support: We’re working on it.
  • Dependency: Because of the framework structure Smartface App studio is built on, you won’t be able to edit the source code of your project. There are some other tools in the market who claims they can do this; however, they only allow C++ coding.