Photo by Mimi Thian on Unsplash
Recently we had a project to be developed in Android to mimic an IOS app. As we had expertise in both native and hybrid application development, it was a big question of the approach suitable for the current project. We first decided to go with the hybrid approach. But later we decided to go with the native approach considering its benefits. Native app development has the significant advantage of being able to easily access and utilize the built-in capabilities of the device like Camera, Addressbook, and GPS. So the user experience with the app will be superior along with faster performance.
A Native Android app development requires good knowledge in Java coding.
Objective
The purpose of the app was to make the Doctor-Patient consultation easy. There were two apps to develop, one app for the doctors and one app for the patients. We were provided with API to get the data shared between Android and iOS apps.
Challenges
For getting data from the API, we decided to use a REST client which is better than writing our own code. Using such a library reduces the coding time and improves the performance of the app. We evaluated Volley and Retrofit for that purpose. After considering various factors we decided to use retrofit REST Client.
One problem we faced was getting push notification delivered to the app. The doctor should get a notification when a patient requests a consultation. We found firebase is the best option to use. Integration was easy by adding the library reference to gradle and coding was easy as expected.
For video chat feature we used OpenTok platform which iOS app was using. Chat with the single user was easy but adding multiple users to the chat was an issue. We resolved it quickly by contacting the OpenTok support team.
Another issue we faced was regarding the image size. The profile image was taking more time to render. We used the Picasso library to improve performance. Picasso handled images, while also taking care of caching and keeping a low memory impact when doing image manipulations.