This application is all about connecting people through different communication modes. These modes can be SIP calling, conference calls, voicemails, or SMS features. After completing registration on the website, users will be provided with extensions along with their QR codes. Users can scan these QR codes for authenticating themselves. After authentication, users can see all their phonebook contacts and also add custom SIP addresses. Users can make SIP calls to these contacts. There is an awesome of making conference calls to multiple SIP addresses. You can also use your VOIP account to login into the application.
There were two major challenges that need to be handled. The first one is Apple’s new UI framework SwiftUI and the second is integrating and using methods to the Linphone library in the most productive way. The lack of content available on the internet on both topics made it super time-consuming. But, utilizing the UIkit experience and after understanding the basic structure of SwiftUI, we have completed the milestone.
The Linphone library is written in Objective C. Though, there is a swift wrapper available, still, we have to find the proper way of implementing the solution is swift after getting guidance from already implemented Obj C code. For this, we had to search the Obj-C code in the library and then implement the swift version in our application. In most of the cases, we avoided this approach. Instead, we made a separate Obj C file containing methods that can be used by swift through the Obj C bridge.
Now, moving to SwiftUI. This framework has reduced the effort required to create user interfaces. But this is completely different from the previous framework UIKit. SwiftUI demanded a good amount of time in the initial days of the project. But, as days went by, things got much smoother. There were features/UI requirements that were not feasible in SwiftUI, then in those scenarios, we went back to the UIKit approach. Thanks, to SwiftUI, we can still use UIKit elements in SwiftUI also.
Building this application was like a roller coaster ride. Both technologies were new with limited developer community support. But, patience and a continuous learning process help us to make it through. We invested initial time in training instead of building an application with very limited knowledge.