Mobile application development has grown a lot over the years. With high scale of mobile users, the demand of mobile apps for business is increasing day by day. Websites are going responsive and mobile friendly. Platforms like iOS and Android are dominating the market. As per research made in 2015 they are 7,000,000,000+ mobile phones in the world.
A recent study by mobileinsurance.com has revealed that the average person spends 90 mins a day on their phone. That figure may not sound like a lot but that amounts up to 23 days a year and 3.9 years of the average person’s life is spent staring at their phone screen.
Since that fateful phone call four decades ago, mobile phones have evolved dramatically. Those magical portable technology boxes have become an essential part of interpersonal communication, and their significance will only increase with time. From the rise of SMS to anywhere, anytime Internet connectivity to mobile photography. From Symbian to Android. iPhone 1g to iPhone 7 plus. We have reached the maturity of mobile evolution.
We at Cyphertree have been in the part of this evolution. Our professional have worked from last 10 years in mobile technology. From QT to Corodova we have witness the era of Nokia to Android.
What are the Cross platform mobile development tools we have used?
- Sencha : Sencha is a tool that lets you develop your apps in HTML5.
- Cocos2d : Cocos2d is primarily used in two-dimensional game development. It gives developers the option of five different forks or platforms to develop on, based on the preferred programming language like C++, Objective-C and Python.
iOS is very matured and powerful mobile operating system. iOS is second most popular mobile operating system after Android. Languages used are Objectieve-C and Swift. Swift is open source and fastest growing community in the open source history. There are also reactive extension to Swift like RxSwift and Realm.
At Cyphertree our professionals have worked on iOS app development since iOS 3.0 to the latest iOS 10.0. Indeed its worth mentioning to be part of the iOS journey. From understanding the human interface guidelines from design, development, testing and Launch we offer 360 degree service for iOS development.
Apple has a mature development studio for iOS development called Xcode. The latest release is Xcode 8 and iOS 10.0. Language used for development as mentioned above is currently Swift 3 and Objective-c. Swift is open source language which also supports reactive extension like Rxswift.
The Fabric app gives you access to all the information you need to triage issues including full stack traces, number of affected users and a breakdown of devices and platforms
The IBAnalyzer is a command line tool that helps find common xib and storyboard-related problems in your Xcode projects without running your app or writing unit tests. IBAnalyzer starts by parsing all .xib, .storyboard and .swift files in a folder and then uses this data to generate warnings.
Wake a platform that helps designers share their work with the rest of their team. Wake provides a handy Mac app that lets you share designs without leaving Sketch, Photoshop or Illustrator with a simple keyboard shortcut.
In Xcode, continuous integration is the process of automating and streamlining the building, analyzing, testing, and archiving of iOS apps, in order to ensure that they are always in a releasable state. In a continuous integration workflow, we write apps locally in Xcode on development Mac and check them into a source code repository.
Jenkins is usually what people think about when they here about continuous integration. It’s been here for a while and can do just about anything.
Jenkins can be configured to perform tests on iOS 9 projects. In Jenkins’ repository exist the XCode integration plugin that allows us compile the source code and execute tests.
The XCode integration plugin does the execution of the tests and the result is written in a file with XML format inside the project. The XML file generated can be read by JUnit. That’s why we are going to use the JUnit plugin to show the tests executed in the iOS 10 project. The Test Result Analyzer plugin shows the results of the tests on graphics for a better understanding.
XCTest is tightly coupled with Xcode but is still usable with both real iOS devices and simulators. XCTest allows developers to write tests for components at any level and also provides the framework for UI testing capabilities. XCTest tests are grouped into subclasses of XCTestCase. Writing any tests with XCTest should be trivial to iOS developers as XCTest is fully compatible with both Objective-C and Swift.
Autolayout, dynamically calculates the size and position of all the views in your view hierarchy, based on constraints placed on those views. For example, you can constrain a button so that it is horizontally centered with an Image view and so that the button’s top edge always remains 8 points below the image’s bottom. If the image view’s size or position changes, the button’s position automatically adjusts to match.
This constraint-based approach to design allows you to build user interfaces that dynamically respond to both internal and external changes.
What deployment tools we use?
Fastlane, is the tool to release your iOS and Android app. It handles all tedious tasks, like generating screenshots, dealing with code signing, and releasing the application.
Why use React Native?
At a times cost of Native app development is too damn high. As it requires resource with special expertise. With react native development on both platforms is rapid as both share the same code.We feel that by using React Native you can actually save some time compared to traditional native development. In particular, on real projects one could save around 30% of development time. Of course this is just a high level estimate and depends on multiple factors.
There is no need for compilation with React Native, as the app updates instantly when saving, also speeding up development time.
While working with React Native we noticed that good amount of components are not well documented with current release of React Native.When the documentation wasn’t satisfying enough we tried looking up things in the React Native source code, however we found ourselves disappointed by the poor quality of code base. Probably in a rush to push more functionality to the framework, they also sometimes overlook how clean the code is.
Of course it is possible to use third-party components, but the selection is not comparable with the number of community-generated libraries that we can find for iOS or Android. A big problem with these components is also the fact that the compatibility and support is not guaranteed with future React Native releases.
native vs hybrid
No doubt Native apps perform well compare to hybrid apps. But platform like React Native is equally good at performance.
Hybrid apps are HTML5 apps that are wrapped inside of a native container and provide access to native platform features. Cordova and PhoneGap are prime examples.
If you’re looking to build an MVP, prototype, or are not worried about the performance, then a hybrid app may work for you, keeping in mind the entire project will need to be rewritten if you do end up wanting to go native.
There are many innovative things going on in this space, like Ionic Framework. Hybrid is getting better and better, but it is still not as fluid or natural feeling as Native.
Our Biggest Mistake Was Betting Too Much On HTML5 — Mark Zuckerberg
Customer experience for mobile is more important to your business than you might think. For many companies, including most serious startups as well as medium and large sized companies, hybrid apps may not deliver the quality that they want and that their customers demand, leaving the feeling unpolished and less professional.
Application which contain lot of media, graphics and which uses GPS, acceleration and such native components need better user experience, such apps are mostly native apps to ensure better quality. The apps which are simple listing apps and very less native components are used can go completely hybrid.
Your mobile device is with you, quite literally, every minute of the day. And if the device is with you constantly, it needs to be responsive and reliable. It should respond quickly and give you the answers you need as soon as possible. These are the expectations of all mobile users. Native applications have the best performance, highest security, and best user experience.
While 79 percent of consumers would retry a mobile app only once or twice if it failed to work the first time, only 16 percent would give it more than two attempts. Poor mobile app experience is likely to discourage users from using an app again. Source
With a hybrid application, unless a company adds a completely new feature that dramatically changes the user experience, the user doesn’t need to update the app in the app store. If the update in question is on a page that is loaded from the server, as the user navigates through your app they will instantly see the update. It’s that simple.
There is one more aspect to this. Using open source platforms like React Native which are still in growth stage keeps updating their platforms. Third party library dependency can be huge issue while maintaining the hybrid apps. It’s always better not to rely much on third party apps while developing hybrid apps.
Additionally, depending on the complexity of the app, maintaining one source code is very appealing because new features are also easier to develop and deploy. Conversely, bug fixes are platform agnostic and can be done and released easily to production. Lastly, hybrid apps are distributed through the app store like all other apps which means the user will not see any immediate difference between a hybrid and a native app.
If you have less than four months to develop an app, and you want to test a limited private market on the viability of your app, then use Hybrid. If the test works, then move to native as soon as you can and show it to the world. If it doesn’t work, you’ve saved yourself time and money.
The cost of native mobile application development is high compare to native app developers, is a statement of past. Currently web developers are asking equal compensation compare to native app developers. The cost factor depends on lost of other factors. As mentioned earlier whats the nature of app, what is the user base. Who are going to use this app? If you are targeting luxury customers, invest in native apps or go hybrid.
There are clear and distinct advantages and disadvantages for both hybrid and native approaches, and that is why this discussion is still relevant. Speed to market, one source code, cross-compatible web technologies, easy updates, availability of resources, and lower (initial!) budget costs make hybrid applications very appealing.
Risk & Security
Just like most modern web applications, mobile applications bring big value to our lives, but also can introduce in big risks. When considering which development methodology best suits your needs, security should also play a role in your decision making.
Native applications are considered more secure than hybrid apps for numerous reasons which include the fact that they are able to leverage platform-specific built-in security features. The fact that hybrid apps are dependent on webviews means that they are prone to injection attacks when using certain API’s. Various techniques, tools and third party libraries that are specific to each platform have been made available to minimize the attack surface.