A cloud communications company includes the application in its product line with the intention of providing complete unified communications as a service (UCaaS) and contact center as a service (CCaaS) solutions suited for small and mid-market businesses. The application provides users with a convenient and integrated platform to make calls, send texts, engage in chat conversations, conduct video conferences, and even access virtual voicemail and fax services, all in one place. Let’s deep dive into the case study to explore the challenges we had to overcome while integrating cloud-based VoIP calling capabilities into an Android application.
Challenge
The mobile application was required to provide comprehensive calling and conferencing capabilities for both: company directory contacts and users' phonebook contacts. However, the conferencing functionality presented a particular challenge as it needed to support the integration of contacts from both directories. Furthermore, the application needed to accommodate multiple concurrent calls and conferences without any restrictions, necessitating robust support for managing multiple ongoing calls and conferences simultaneously.
In addition, the application had to efficiently handle incoming calls through push notifications and gracefully handle scenarios where users had enabled the Do Not Disturb (DnD) mode, ensuring a flawless and uninterrupted calling experience.
Moreover, the application was expected to facilitate both attended and unattended call transfers, enabling transitions between different parties. It also needed to offer the capability of converting individual calls into conferences by integrating another call. To ensure compatibility and interoperability with other calling applications on mobile platforms, our applications integrate with crucial platform subsystems. On Android, the application requires integration with the Android Telecom system service. These integrations offer users a cohesive and uninterrupted calling experience, regardless of their device's operating system, ensuring the app operates harmoniously with native and third-party call handling apps.
To fulfill the calling-related requirements, the mobile applications were also required to support external provisioning for users' SIP accounts. External SIP provisioning involves remotely configuring and managing SIP settings for VoIP devices or applications, enabling centralized control and updates of configuration parameters for efficient deployment and maintenance of SIP-based communication.
Solution
In the context of integrating VoIP capabilities into an Android application, there are numerous ready-made solutions. After careful consideration of the requirements and client needs, we opted to use the Acrobits Softphone SDK, as it comprehensively addressed all the necessary use cases.
While the initial integration of the Acrobits SDK was straightforward, achieving full coverage of all the desired use cases required the development of a proxy layer. This proxy layer served as an intermediary between the SDK and the remaining components of the application. Its purpose was to address certain limitations observed in the Acrobits SDK API for call and conference management. Additionally, the proxy layer efficiently handled various call events and facilitated the mapping of calls to directory users and phone book contacts.
The server-side components of the Acrobits SDK seamlessly integrate with Firebase Cloud Messaging, enabling the delivery of incoming calls via push notifications. To ensure redundancy and uninterrupted functionality, we implemented a redundant notification channel as a backup in cases where a push notification failed to arrive through the Acrobits SDK channel.
We leveraged the Acrobits SDK's external provisioning feature to run at remotely configurable intervals using the platform's background work mechanisms, even when the app was not active.
Results
We successfully fulfilled all of the client's requirements for VoIP capabilities, ensuring both the stability of the application and meeting project deadlines without compromise. Throughout a year of being in production and with a substantial user base engaging in hundreds of thousands of calls, the number of support tickets related to calling remained minimal, in the single digits.
Additionally, the implemented VoIP mobile application included integrated analytics reporting capabilities throughout the entire calling flow. This allowed for the collection of valuable data on the usage patterns of various features, providing insights into which functionalities were most frequently utilized and how they were being utilized. This data-driven approach enhanced the understanding of user behavior and aided in further optimizing the application's performance and user experience.
The application demonstrated its reliability by serving as a dependable companion for the client's partners. This was particularly evident during an incident that rendered desk phones inoperable, as employees undoubtably relied on the mobile app to sustain uninterrupted business operations.
Lessons Learned
While the Acrobits SDK successfully fulfilled the client's requirements and operated as intended after the application's production launch, challenges arose with its API for call and conference management. These challenges would prompt us to explore alternative VoIP SDKs like the Voximplant SDK if we had to integrate VoIP into mobile applications once more.
By following best practices, selecting appropriate protocols, and prioritizing user experience, developers can create an Android application that stands out in the competitive VoIP landscape, ultimately providing users with a reliable communication experience. As the demand for efficient communication solutions grows, embracing VoIP integration in Android applications becomes an indispensable choice for any forward-thinking app development strategy.