We often encourage our clients to move to the mobile space to maximize their presence with end users. This goal can be fulfilled by upgrading existing sites to responsive layouts or separate mobile themes. Others take advantage of third party networks, such as social networks and advertisements, to reach their audience in a mobile setting.
We also see tremendous value in interfacing with smartphone and tablet users via a native mobile app. Why not take advantage of the vibrant app stores accessed daily on Apple, Microsoft, Samsung, or Google devices?
But I hear we have to learn a new language…
Each platform has its own development framework. Apple has Objective C (and Swift). Google uses Java. Microsoft deploys C# or Visual Basic for their Windows Phones. To go native, then, means development teams will need to learn and maintain three separate code bases, each with its own distinct flavor. Stakeholders must make sure all of them are fully supported with adequate time and budget.
Stakeholders are likely to question the value proposition of paying three times the amount to support a single native application.
Is there a way to simplify this?
In the abstract, it is easy to simplify the native app conundrum. After all, all mobile devices have similar properties, like touchscreens, audio, microphones, and GPS features. So to have multiple code bases doing pretty much the same thing makes little sense!
To solve this problem, organizations have started implementing hybrid cross-platform solutions with great success. Developers only master one set of technologies and deploy to all the other platforms this technology supports. Their code interfaces with APIs that reference different drivers to each mobile platform.
Some options include:
Cordova / Phonegap
Most developers new to the mobile game would benefit from this growing stack, and with frameworks like Angular and Ionic providing lightning quick user experiences, there’s no reason why you can’t ease into native development with existing and popular languages.
As of this writing, the framework is only compatible with iOS devices. Android functionality has recently been integrated into the existing feature set, but is still experimental at the moment.
Are you looking for a framework that closely translates to the existing MVC frameworks each of the vendors provide? Are you familiar with writing applications in Java and C++? Then give Xamarin a try!
Xamarin is the most reliable cross-platform framework that integrates with all (or most) mobile features on each supported device. Microsoft has recently invested a large sum of money to have the framework compile elegantly to their Windows phones, as well.
The programming paradigms of C#, the language used in Xamarin, will translate best with the existing native languages on each platform, helping with easier integrations and compilation. It also sports a large number of tools to help test your mobile app in almost all devices.
To tap into this framework, you will need to negotiate a subscription with them. They do, however, offer starter accounts to allow you to test drive their framework without any of the bells and whistles.
We have not tried all the frameworks, but here are some of the other options available:
Start developing hybrid apps!
Hybrid apps offer simplified development and cost savings initially. However, the mobile ecosystem changes frequently. When one platform offers a new hardware feature, you’ll have to wait until your cross-platform vendor supports it or, if it’s open source, contribute that code first before you can start using it. And there’s no guarantee that feature will be bug-free.
If you are a stakeholder who wants to stay on top of new features, then hybrid development will not cater to your needs in a timely manner. It is a large investment, but if time is of the essence, then you might want to develop natively. To help you with your technical decisions, refer to the following pros and cons:
- Simplifies business logic into a single code base.
- Deploys to multiple platforms with minimal special cases.
- Eliminates need to interface directly with device drivers by using APIs and plugins.
- Single framework, meaning you don’t have to use multiple IDEs with expert knowledge.
- Not all native features will be available for use.
- Tapping into new features will not be immediate, and sometimes non-existent depending on the maintainer of the framework. Also there’s a good chance they will be buggy.
- May not provide true native experience considering the user interaction is typically homogenous across all platforms.
- Lacking knowledge in the native frameworks will prevent you from debugging undocumented issues.
- All vendor tools will be available to you (provided they are documented).
- More performant than alternatives that compile into native or interfaces with web views.
- Grants you access to device-specific assets which will stay consistent with the device’s visual standards.
- Greater chance your app will not get rejected due to poor user experience.
- More costly due to high maintenance of multiple code bases.
- May require more developers with experience in each framework to maintain.
- Very high chance you have to stay on top of vendor changelogs to make sure you app is compatible with the latest version of the device (most common with Apple devices).
What do we suggest?
Most native developers will advocate to ignore hybrid solutions. I personally believe going native is the most scalable option. Even if you begin developing with a hybrid solution now, nothing is stopping you from changing frameworks two years down the line. When it comes time to invest in a native solution, you will not be wasting much effort by sunsetting the hybrid solution.
From experience, I’ve observed that most apps can get away with hybrid solutions with minimal issues. If you’re using a solution like Xamarin, porting your code should not be too much of a problem down the line.
What has Phase2 done on the mobile front?
Over the past two years, we have researched and implemented solutions using Cordova and Ionic to create native apps to enhance our clients’ mobile presences. Last year, we released the Bassmaster News App to provide fans with a more accessible interface to get news about the latest fishing news and tournament. We worked with Rare to create a lean, usable campaign tracking app with around-the-world accessibility, and we helped Humanitarian.ID implement a contact management system to coordinate humanitarian responses in crisis zones.
We are continually looking into best practices in this field so we can provide the best solutions available.