If you have reached this blog post, I guess it is because either you are bored (there are better things to do when you are bored, by the way…), you are interested on how to develop mobile apps (ok, I’ll try to help!) or you are asking yourself if your business needs a mobile apphonestly.

Anyway, as I said, I will be writing a series of blog posts that will help you.

The Challenge

One of our clients asked us to develop mobile apps for their business almost a year ago, for both Android and iOS. They wanted the first app to be delivered quickly (in about three months!!!) for both Android and iOS. Of course we embraced the challenge and we asked ourselves the following questions:

  1. How can I develop an app quickly for multiple devices and operating systems?
  2. How can I be sure that the quality will be good?
  3. What challenges will I find in the way?

Let’s answer these questions!

How can I develop an app quickly for multiple devices and operating systems?

Use PhoneGap. Now you will ask, why should I use PhoneGap to build mobile apps? Well, the answer is simple:

  1. PhoneGap allows you to write the code once, delivery to multiple devices and operating systems.
    So you don’t have to re-write device specific code, or if you need to, you will do it rarely.
  2. PhoneGap uses technologies you may already know.
    I can start with the browser and then test on the device? Seriously? Just HTML5, CSS and Javascript? No need of Java, Swift, Objective-C, …? But … that’s great!!! There is no need to know how these mobile devices work! Okay, this last sentence is not entirely true. You need to know how these devices work (of course, you want to develop the best solution possible, so you need to know what are you doing!) and you (hardly) may need to use device specific development language, but we already finished two apps, both of them pretty complex, and only wrote HTML / CSS /Javascript code.
  3. PhoneGap adds plugins to access device specific features, with official and community plugins.
    You need to geolocate the device? Done! You need to take a photo? Done!! You need to schedule a notification? Done!!! Whatever you need! And if there is something specific you need, that can not be done with Javascript, HTML5 or CSS, you can write your own plugin! (And of course, share it).

Of course, you are going to find some challenges. We will talk about that later.

How can I be sure that the quality will be good?

Steve Ballmer is widely known by his Developers! Developers! Developers! exposition, among other things. Well, I am going to go with just Framework! Framework! Framework!

Nobody starts developing an app or a website by just writing some HTML and Javascript to create the functionalities on demand and then dropping in some CSS to have it look good (ouch, some people do, but we can just ignore them). That approach results in a bunch of lines of code – indescribable, unmaintainable and buggy. You definitely want to avoid that.

You need to take care of:

  1. The Audience
    Will you develop for every OS and version, or just for the most common ones? Will Android and iOS be enough? From Android 2.3, or just from Android 4? Only the latest version? Well, here is some data I hope it will help you to decide (from January 30, 2015).Smartphone OS market share

    Period Android iOS Windows Phone BlacBerry OS Others
    Q3 2014 84.4% 11.7% 2.9% 0.5% 0.6%
    Q3 2013 81.2% 12.8% 3.6% 1.7% 9.6%
    Q3 2012 74.9% 14.4% 2.0% 4.1% 4.5%
    Q3 2011 57.4% 13.8% 1.2% 9.6% 18.0%

    Source: IDC, 2014 Q3

    Well, looks like Android and iOS development might be enough. Or not? In any case, which OS versions should we target? Let’s see:

    Android usage (January 5, 2015).

    chart
    Version  Codename API Distribution
    2.2 Froyo 8 0.4%
    2.3.3 – 2.3.7 Gingerbread 10 7.8%
    4.0.3 – 4.0.4 Ice Cream Sandwich 15 6.7%
    4.1.x Jelly Bean 16 19.2%
    4.2.x Jelly Bean 17 20.3%
    4.3 Jelly Bean 18 6.5%
    4.4 KitKat 19 39.1%

    So Android 4.0.3+ would be around the 91.8% of the Android users. Looks like enough.

    iOS usage (January, 19, 2015)

    chart-01-19-15_2x
    Version Distribution
    iOS 8 69%
    iOS 7 28%
    Previous 3%

    iOS usage as measured by the App Store on January 19, 2015.

    In this case, iOS7 + iOS8 would be around the 97%.

    Well, so it looks like being focused on Android 4.0.3+ and iOS7+ is a good starting point!

  2. The Presentation Layer
    You are going to need a system that presents different views depending on the device. If it is landscape or portrait, a big device or small one – there are not dozens or hundreds of different devices, there are thousands! Each with a different OS and version! And you need to define the switch buttons, and to work with the scroll you may need tabs, accordions, drop down menus, or overlays. You definitely want something to start with.
  3. The Business Layer
    How many lines of Javascript code do you think you can have? Our last app had 15k+. And this is not even the main reason to work with a Javascript framework; but I will address this point in another blog post.
  4. The Persistence Layer
    How will you store the persistent data? Will you store the data in plain text? Will you use a database in the device? Will you use some cloud services? A mixed solution? Something different? Will that change in the future? In any case, you should select a persistence framework.
  5. Other Tools
    Nice, now that you think you have everything defined, how are you going to link your app with social media? How are you going to create reports? How are you going to take care of business analytics? Will your app send emails? Link with other apps? You are going to face different requirements and you will pick different tools to do it: a PDF generation tool, a custom Web Service to link with your website and update information automatically or on demand, an authentication system, an external analytics tool, plugins, plugins, plugins, REST, and so on.
  6. Test
    You are aware of the importance of a test system. You have wide experience managing development projects, you know how to prepare and schedule a test plan, you picked your test tools, you are confident about your design, your and your team’s knowledge on the technologies, etc., etc. And you know what? It is not going to be enough.
    That awesome app you created is working great, but it is going to fail on Samsung Galaxy Tab 10.1 with Android 4.0.4. because they have a customized OS that behaves differently only in this case. If you test with your Nexus 6 with Android 5.0.1, a picker is going to fail, because somebody forget to correctly implement the HTML5 compatibility thats works awesome on previous versions. Oh! And that plugin that works great everywhere? Do not worry! On iPhone 5 with iOS 8 it’s not going to work anymore! Nobody knows why. May be they get tired of the functionality? Double your estimated testing time. Triple it. Be sure that you have a wide range of devices with different OS and versions. You will need it. And be prepared for some crazy bug solving sessions.
  7. Delivery
    Did you know that Apple needs around 3 weeks to review and approve a submitted app, while Android needs a couple of days? And that they will ask you for user and passwords to test sections that require login? Well, that’s something you need to know.

What would be the best solution? Pick your tools! There is a world out there! But I will be nice and share some information with you in another blog post.

What challenges will I find in the way?

You will have several challenges. Nothing is as pretty and brilliant as it sounds! Otherwise, it wouldn’t be fun. I will try to summarize the challenges we found, even though I’ve already talked about some of them.

  1. Different views
    You will get frustrated because you will have to implement tablet view, small phone view, phone view, phablet view, landscape, portrait, etc. Well, this is part of the fun! Pick a good UI framework, and be prepared to be responsive!
  2. Different behavior
    You will notice that something that works fine on Android, doesn’t work on iOS. Might be the other way. In this case, you might have two “different” apps, or a limitation over what you wanted. Be prepared to deal with this.
  3. Development
    Working with PhoneGap is easy. Working with HTML, CSS and Javascript is easy. Even working with plugins is easy. But the power of such tools might be limited in some cases. And you might not be able to do everything on the phone! Be prepared to have a server that can publish some web services; you might need it.
  4. Publication
    You have finished your app on time, you have completed the crazy testing, everything is prepared, everybody is happy… and then you will have to wait until the app is checked by the stores. Be prepared for this delay when you estimate the project. Fortunately, the upgrade of an app takes less time.

Well, I hope this blog post has helped you!! Stay tuned, I will continue with this interesting matter soon.

For More Information

For more information about expert help with your Liferay implementation, check out https://www.xtivia.com/portal/liferay-portal, or contact us at https://www.xtivia.com/contact/. And don’t hesitate to contact us if you have any questions!