Factors: Mobile App Development

Sourabh Malwe
5 min readApr 28, 2018

--

The audience for this article are the ones who are starting new on the mobile app developement. Out of my experience while working on various mobile projects I came across various factors which needs to be kept in mind while designing or architecting a mobile application.

Mobile App Development Factors

Authentication Layer

This should be the first task in your developement cycle. This layer should be extensible enough to take care of multiple request requesting for authentication , inflight requests etc. Should take care of refreshing the access token, error handling when refresh token gets corrupted and other similar scenarios

Automated Builds

Always make sure you have the automated build setup for both Android and iOS and a way to distribute the builds to the testers. I use Diawi for uploading the apk(for Android) and ipa (for iOS) files to distribute it to testers. It generates a link/QR code and user can download the app for testing. Android builds can happen on any machine but for iOS builds you would need a MacInCloud account(It’s paid) and run the build scripts on it.

Graceful Mobile Experience

It should not happen that due to some reason the user cannot navigate back and forth in the app even if the network is gone or api’s stopped working. User should always have access to navigation bars so that they can still access the cached pages, logout, reload the pages once the network is on , come out of the app etc. Always avoid the situation where a user needs tp kill the app. This is another design feature which needs to be considered upfront.

DataModelling

While designing the data model always consider the ttl of the API (if the API is sending), have default ttl, cache layer, multiple data source sending the same data along with the normal table or key value store.

Pull To Refresh

If the apps data is changing very frequently and people wants to see the updated information this features comes in handy.It’s generally required in the app which shows live event updates.

Crash Analytics

It’s very important to integrate crash analytics support with in the app, so that if users app crashes we would know the reasons and thus accelarate the fix in the upcoming versions. Various tools are available out there eg: Firebase, HockeyApp. Please check the support for these in the chosen framework. For ionic, the support for Firebase Crash Analytics is very poor as well as no stable library present. All of them are in very early phase and have some dependency issues. I spent around 2 days but no luck. Then I moved to hockey app ionic library and it worked out of the box.

DataStore

From app design perspective this is the most important aspect to be considered. There are various options to store the data in the mobile. For eg: WebStorage(LocalStorage, SessionStorage), IndexedDB, InMemory, SQLite etc. Localstorage size is 10MB, so if your data to be cached is less this is a good option. One drawback of using this is, when your mobile memory is full OS clears the localstorage data. SQLite is filebased storage and is considered much stable to store if the data is more. It is a full regular relational embedded storage and it can be a good friend if you want to cache/store large amounts of data on the client-side and you need to query it by complex criterias.

Navigation Stack

This is one of the most important feature of an app when it comes to navigating different pages and there are more than once entry point to reach a given page. Also it can be part of different navigation stack for eg: App navigation, Tab Navigation, Menu Navigation etc. Always look for the scenario so that user is not stuck in a circular dependency (dead end) in which he/she may need to kill the app.

Network Connectivity

Generally people design the app along the happy path assuming users always have high speed internet connectivity and then they launch the app. This is the point where most of the begineer mobile developers take the hit when the users app is not working, keeps on loading the data and thus results in low rating on the apple/google store. Fixing these kind of issues is not easy once the app is already launched and requires lots of regression. So while designing the app, this is one of the key feature which should be taken into account.

Check Platforms

Always be clear for which platforms the app is going to be built. Make sure all the developers/testers working has the relevant setup on the machine and is well documented so that any new developer can hop on quickly. Should be clear on how the developers and testers are going to test the build.

For Android you need to setup Android Studio, Gradle at minimum.

For iOS you should create the signing requets to generate certs and thus the provisioning profiles (It’s a long process, if you don’t know it will take minimum one day. Adviced to sit with someone who already did this and it would reduce to a 15 mins job). You will be needing a Mac and iPhone at minimum to start with iOS development no matter which framework you are using.

Subscriptions

If your app requires subscriptions, then follow the docs for Google and Apple subscription procedures. Note: You need to build some backend as well to handle the receipts exchanged when the user pays for your app and you need to maintain that list on the serve side.

Native Features

Always make a list of features with in the App which are going to use native device support. For eg: Camera, Status Bar, Location Services, Notifications etc. Then check wheather the support is present for all these in the chosen framework or not (I used Ionic, worked out well).

Push Notification

If your app requires the push notification, decide upfront which service your are going to use. For eg: Firebase, Onesignal. Please check the availability of the relevant plugin available for the chosen framework. First test those with iOS and it requires app certs to be added inorder for a device to receive notification. Also decide on whehter you need topic based push notification or device based.

--

--