Softphone für Android: Technologien, die wir nutzen
Das kürzlich angekündigte Softphone für Android ist eine logische Weiterentwicklung und lang erwartete Erweiterung unserer Produktpalette: Jetzt umfasst es nicht nur Win- und Mac-Lösungen, sondern auch mobile Versionen.
Die allgemeine Logik bleibt jedoch dieselbe: Es handelt sich um eine zweistufige Client-Server-Architektur. Auch in der Organisation unseres Entwicklungsprozesses gibt es keine wesentlichen Änderungen: Wir speichern und pflegen den Code und testen Builds vor der Veröffentlichung, um die Qualität sicherzustellen.
Hier erzählen wir, wie es in unserem Team läuft.
Entwicklungsansatz
Bei der Arbeit an der Android-App folgen wir MVVM (Model-View-ViewModel) und trennen die Entwicklung einer grafischen Benutzeroberfläche (GUI) von der Entwicklung der Geschäftslogik oder Back-End-Logik. Dies impliziert Modultests (Unit-Tests), und das ist ein großes Plus. MVVM gilt als einer der beliebtesten Ansätze für das Design von Client-Anwendungen, insbesondere in Situationen, die Model-View-Controller (MVC) oder Model-View-Presenter (MVP, nicht zu verwechseln mit Minimum Viable Product) nahelegen.
Wir hoffen, unsere Leser werden es uns verzeihen, wenn wir einen kleinen lyrischen Exkurs machen und in aller Kürze erzählen, was die Komponenten sind und wofür sie verantwortlich sind.
Model:
Es übernimmt Inhalte und Geschäftslogik.
View:
Diese Komponente dient der Interaktion mit einem Benutzer und der Visualisierung der oben genannten und vom Model bereitgestellten Inhalte.
ViewModel:
Es ist ein Vermittler zwischen Model und View: Es transformiert Daten aus dem Model in ein Format für die weitere Visualisierung in der View und verarbeitet die Benutzerinteraktion (sendet sie an das Model).
Lesen Sie hier mehr.
Kommen wir nun zurück zum Thema.
So sieht MVVM aus
Kurz gesagt: Es führt zu einer besseren Lesbarkeit des Codes und besseren Skalierungsmöglichkeiten. Aus diesem Grund wird der MVVM-Ansatz häufig für die Entwicklung von Programmen mit GUI wie Web-Apps und Desktop-/Mobil-Apps (unser Fall!) verwendet.
Client und Server
Die Clientseite von Softphone.Pro ist in Kotlin geschrieben. Es ist eine statisch typisierte und objektorientierte Programmiersprache, die auf der Java Virtual Machine (JVM) läuft. Kotlin ist also vollständig mit Java kompatibel; außerdem können Kotlin- und Java-Klassen problemlos in einem Paket zusammenarbeiten, und das ist cool.
Eine lustige Tatsache: Die Sprache Kotlin ist nach der Insel Kotlin benannt, die in der Finnischen Bucht liegt. Wir als echte Programmierer lieben solche Easter Eggs (man sagt, dass auch die Sprache Java zu Ehren der gleichnamigen Insel benannt wurde). Vielleicht gibt es eines Tages eine Insel, die unseren Namen trägt. Warum nicht? :)
Was die Serverseite betrifft, würden wir sagen, dass es zwei gibt ... ja, das mag überraschend klingen. Tatsächlich benötigt das Softphone einen Wecker (PUSH), um bei eingehenden Anrufen geweckt zu werden, da der Anruf sonst verpasst wird und Mobilität an sich keinen Sinn hat. Außerdem gibt es ein Dashboard für Vorgesetzte (Team), wo Anrufe analysiert und in Echtzeit überwacht werden können, was vor sich geht.
Sowohl Team als auch PUSH sind in Go geschrieben (auch bekannt als GoLang, nicht mit Go verwechseln!) – einer kompilierten Multithread-Sprache, die von Google entwickelt wurde. Go unterstützt sowohl objektorientierte als auch funktionale Stile. Wir mögen Go wegen seiner Einfachheit, Multithread-Programmierung, plattformübergreifenden Nutzung und schnellen Kompilierungsgeschwindigkeit – und das ist es, was uns mit Uber, Dropbox, American Express, BBC vereint … genug große Namen :)
Kurz gesagt können Client- und Serverseiten mit nur wenigen Worten beschrieben werden – Java, Kotlin, Go. Klingt wie ein lebensbejahendes Motto … und sieht gut aus.
Die drei Grazien. Großartiger Klassiker!
Testen und Warten
Wir haben das Testen von Modulen bereits im ersten Teil des Artikels erwähnt – in unserem Fall läuft es mit WinAPI-Treibern und Python-Skripten. Dies ist ein dreistufiger Prozess: Commit, Autotests, Benachrichtigungen.
Parallel dazu werden Regressionstests durchgeführt (um sicherzustellen, dass nach dem Hinzufügen neuer Funktionen oder Beheben von Fehlern immer noch alles in Ordnung ist). Und natürlich werden auch Integrationstests und Systemtests durchgeführt: Erstere werden zur Überprüfung der Modulinteraktion benötigt, zweite dienen zur Überprüfung der Interaktion der App mit ihrer Umgebung (Betriebssystem, Netzwerk usw.).
Wie der Code jedes anderen Entwicklers sieht unser Code wie ein sich ausbreitender Baum aus: Natürlich können wir nicht auf ein Versionskontrollsystem verzichten. In unserem Fall ist das Git mit der grafischen Oberfläche TortoiseGit (obwohl es Old-Schooler gibt, die Bash bevorzugen). Für die Speicherung verwenden wir Redis und PostgreSQL.
Wie Sie sehen, sind die Technologien wertvoll, also ist das Produkt auch gut. Und es ist übrigens zu 100 % bereit zum Etikettieren – Ihr Markenname, Ihre Farben, Ihr Logo. Wenn Sie also nach einem Whitelabel-Softphone für Android gesucht haben, ist es das Richtige. Wenn Sie es brauchen, wissen Sie, was zu tun ist. (Sagen Sie uns einfach Bescheid und senden Sie eine Nachricht an info@softphone.pro) 😉)
Guter Code und reibungsloser Ablauf für alle 📱
DAS KÖNNTE IHNEN AUCH GEFALLEN
Blog
Softphone für Android: Schlaf oder Schlafentzug?
Blog
Mobiles Softphone, bereit für White Label: so haben wir es gemacht
Help
How to improve SIP call quality