Mobile app development is one of our main services we provide for our clients. By 2016, Gartner has predicted there will be 310 billion downloaded apps reaching $74 billion in revenue. With nearly 3 million apps in general distribution, competition to stand out is fierce. There are over 1,350,000 apps in the Apple app store alone, combined with 1,300,000 apps for Google Play and another 300,000 for Windows. We are capable of developing iOS and Android apps. Even though Windows phones have a small market share we are capable of developing Windows universal apps.
Strategy, design, development, marketing and maintenance are 5 key phases of mobile app creation that can ensure the greatest chance for success of a mobile app. Each phase is critical to the app’s overall success and feeds into the next step of the process of product development for the app. Building a well-crafted product development plan that addresses market research, strategy, design and development will provide the greatest chance for success.
For mobile apps, we need to be thorough on wireframes and the flow of the processes. Unlike a web-site, Adding too many views can complicate a mobile app. UI for a mobile app has to be simple and easy to use.
Android UI is designed in XML. Animations and Style definitions are also written in XML. By reusing a common/shared style definition, we can easily change or improve the theme for an Android application. It also makes the visual style more consistent across an app.
There are some cool new UI features for modern Android phones that were not available in older versions. For an example KitKat and Lollipop UI design possibilities are wider and richer. over 85% of Android market share is based on the last two Android versions. Therefore, by targeting only the latest two Android versions, we can deliver a better and richer UI experience. It is also possible to develop fallback options for older Android versions. But it is usually not cost efficient to do so.
A mobile app may often require a central database and an API to connect with the app for data. A common data transport format we use in mobile apps is JSON. Each mobile user is identified by a token issued at authentication/registration that will be stored on the mobile device.
There are different levels of data API integration for mobile apps.
- For applications that need to work only with a network connection, we can connect to the API and fetch data. We can cache data in mobile storage to reduce bandwidth usage. In such case the server sends data only if it has newer data, if not cache is used. It is simple to implement, but would not work when there is no internet connection.
- For applications that need to work even without network connection (offline), we can use local storage. But the app may need to fetch data on the first use. A simpler case is a common data set that applies to all users. We can store all this data in an SQLite database with a version, and serve via the API. Whenever there is a newer version of database, mobile app will update itself to the latest.
There are advanced apps that serve specialized/personalized data for each user. When such an app also needs to work offline; we need to implement serious local storage abstraction. Lets say there is a message queue, like WhatsApp. Each user has personalized data. The app should update its local database with new messages. We keep a message number, so the app would query the server “if there is any new messages after this number”. The server will send an update with any message to that user after the checking the assigned number.
Push notifications / Cloud messaging
Usually in web technologies, content is delivered to a user upon a request (by the user). A user has to be using the application to receive information. This pattern comes from the TCP/IP. Many simple mobile apps also receive data in this pattern. But there are other options too. The server can initiate an action and Push data to a user. This could be another user sending a message, Some scheduled event, A trigger set by the user, a notification. These “Push Notifications” are delivered from the server to the mobile device via Cloud Messaging. A received push message rings the notification sound on mobile device and displays a message on the notification area. We can set commands to initiate further action or display more information when the user clicks on the notification.
Mobile apps have access to a rich collection of sensors to capture physical interactions, geolocation, cameras and microphone. All these make mobile experiences rich and diverse.
Mobile apps are ideally downloaded from the respective marketplace. But for testing/review – we send the APK files and track every package with a version number.
Testing and deployment of mobile apps are radically different from web apps. Mobile apps require installing a binary package each time a change is made. We carry out testing on both virtual devices and real devices. It is faster to debug/test on a virtual device than the real device. We use hardware accelerated (Intel HAXM or KVM hypervisor) virtual devices to make testing/debugging faster.