Anyway, as I said, I will be writing a series of blog posts that will help you.
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:
- How can I develop an app quickly for multiple devices and operating systems?
- How can I be sure that the quality will be good?
- What challenges will I find in the way?
Let’s answer these questions!
- 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.
- PhoneGap uses technologies you may already know.
- PhoneGap adds plugins to access device specific features, with official and community plugins.
Of course, you are going to find some challenges. We will talk about that later.
You need to take care of:
- 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%
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).
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)
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!
- 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.
- The Business Layer
- 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.
- 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.
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.
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.
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.
- 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!
- 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.
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-us. And don’t hesitate to contact us if you have any questions!