Is Cross-Platform Development Right for You & Your Mobile Medical App?
Is Cross-Platform Development Right for You and Your Mobile Medical App?
Your company has decided to create a mobile medical app. Perhaps it will monitor your medical instrument, streamline the workflow of a health care practitioner, improve patient compliance, or educate patients. When you come to us to develop your app, we’ll ask a series of questions to determine your requirements.
One of the first questions we’ll ask is, “Which mobile platform do you want to support: Android, iOS, or both?” (Although there are other options, Android and iOS have the lion’s share of the market and my focus will be on supporting these two mobile platforms.) If you answer “iOS only” or “Android only”, our follow-up questions will be, “How likely is that to change?” and “Have you considered the possibility of supporting the other platform in the future?” Having managed multiple mobile development efforts, I have found that thoughtful and early consideration of these questions is essential for choosing a cost- and time-effective means for development. In fact, one of my current clients initially targeted a single platform and is now facing the possibility of supporting the other platform. Fortunately, we had discussed and agreed on cross-platform support before development began.
Regardless of whether you are considering supporting or will definitely support both platforms, what development environment is right for you and your mobile app? The options are to use the native environment, for “just iOS” or “just Android”, or a cross-platform environment which will support both. Let’s explore cross-platform development.
What is cross-platform development?
Cross-platform development is essentially using a single language to create your apps for the target mobile platforms rather than the native development environments. The languages can be C#, HTML, or JavaScript, for instance; it depends on the choice of cross-platform tool. For a variety of reasons, Syncro tends to recommend the use of Xamarin Studio for our client projects. (That’s what we used for that client I mentioned earlier. So, rather than rewrite the entire app, we’ll only need to create a new UI and service layer in order to support the other platform). While the details here apply to Xamarin, most of them will apply to other commonly used cross-platform tools, such as PhoneGap and Appcelerator Titanium. (The difference between these tools and their relative advantages and disadvantages is a conversation for another day.)
Why Use Cross-platform Development?
The primary reason for cross-platform development is to have common code across platforms. Since development uses a single software language, a significant portion of the code is common to all platforms. Common code written in a single language has many benefits:
- The common code is written once. So, cross-platform development requires less code than the native environments, which require developing the entire app for each platform. Common code translates to less time for app development, lower cost, and less time to get your app to market. For a large application, this equates to huge savings.
- Familiar languages used in cross-platform tools also decrease development time. The team already knows the syntax, grammar, and other constructs of the language.
- Industry architectural and design patterns, such as MVVM, exist for some cross-platform tools. MVVM (Model-View-ViewModel) increases the amount of common code, leaving primarily the UI and platform-dependent services to be built for each platform.
- Fewer platform-specific specialists are needed.
- Constructs in the language may be more robust than the native languages. For instance, the robustness of garbage collection typically surpasses iOS’ Automatic Reference Counting.
- Engineers only need to be proficient in one development tool, not two.
- A single language simplifies team interaction, code reviews, and coding standards because everyone speaks the same language.
- There is a single code set to maintain. Adding or changing features for 2 platforms occurs mostly in a single place in the code.
- Since cross-platform tools use a single language, apps for both platforms can be developed simultaneously or sequentially. There is no difference in overall cost or effort because the same amount of code is written either way.
What trade-offs accompany cross-platform development?
I know what you’re thinking. “That all sounds great, but what am I giving up?” Well, just like everything else in engineering, there are trade-offs. Some of them depend on the selection of the cross-platform tool. In general, you should consider the following when choosing whether or not to use a cross-platform tool:
- Your app is likely to depend on services (e.g. email and Bluetooth) provided by the operating system. Therefore, this requires some understanding of the native platforms.
- Cross-platform development environments do not always fully support the native OS. Some features, tools, or documentation may be missing, inadequate, or implemented differently. In cases when the cross-platform debug tools are not as comprehensive as the native tools, we use the native tools. In our experience, we’ve been able to overcome any shortcomings in the cross-platform environment.
- Native OS features or functions do not always fit into the architecture of the cross-platform code. For instance, iOS storyboards do not work with MVVM because the view models control the navigation. This requires creating the view with the XIB files.
- Due to the way cross-platform frameworks create the apps, they may add overhead to small applications. Each app and its potential extensibility need to be evaluated on a case-by-case basis.
What else to consider?
Since all things are never created equal, cross-platform development has some nuances to keep in mind:
- While the functions, features, and basic navigation remain the same for each platform, the app user interface can be developed in two primary ways:
- The user interface can take on the fit and form of apps for the native OS following Android design guidelines or iOS Human Interface Guidelines.
- The user interface assumes your own brand, fit, and form.
- While the functions, features, and basic navigation remain the same for each platform, the app user interface can be developed in two primary ways:
With some cross-platform development, a unique UI for each platform is created. This can certainly be a benefit because creating apps that make use of familiar native features will typically increase the app acceptance.
- Apple notoriously releases new versions of iOS every year and sets deadlines for when the new
Where to go from here?
There are two primary environments for developing mobile apps: cross-platform and native. As discussed above, cross-platform development generally saves you time, effort, and money. However, cross-platform development may not be appropriate for all scenarios. Nevertheless, for large mobile medical apps that are likely to run on both Android and iOS devices, cross-platform development should strongly be considered. Since multiple cross-platform tools exist, the remaining task is tool selection.