Darum klingelt dein Handy – oder auch nicht.
Mist, schon wieder einen Anruf verpasst. Das blöde Ding hat doch gar nicht geklingelt!?
Solche Sätze wollen wir nicht hören – höchstens wenn wir im Teamraum eine neue Version testen. Denn wenn du einen Anruf verpasst, dann haben wir unseren Job schlecht gemacht.
Bei den letzten drei Updates haben wir uns nochmal intensiv mit der eingehenden Erreichbarkeit von satellite beschäftigt. Das Ergebnis ist die Version 1.1.8. bei Android, mit der wir jetzt alle Geräte und Betriebssysteme abgeholt haben – hoffen wir zumindest.
An dieser Stelle möchten wir ein großes Lob an unsere Beta-Tester aussprechen. Die haben uns geholfen, auf möglichst vielen Geräten zu testen und so die neue Version noch zuverlässiger zu machen.
Aber warum ist das mit der eingehenden Erreichbarkeit eigentlich so ein großes Thema bei uns? Kann man nicht einfach das Handy klingeln lassen und satellite starten, wenn ein Anruf ankommt? Funktioniert bei der “normalen” Telefonie doch auch ohne Probleme!
Der Aufbau von Anrufen ist bei satellite anders
Den Unterschied zur normalen Telefonie kann man nicht in wenigen Sätzen erklären. Wenn du aber interessiert bist und ein wenig Zeit hast, bringe ich in diesem Artikel ein wenig Licht in das Dunkel. Auf geht’s...
Ein „klassischer“ Anruf auf dein Mobiltelefon kann nur deswegen zugestellt werden, weil es durchgehend mit der nächstgelegenen Funkzelle verbunden ist. Jedes Smartphone ist so optimiert, dass es möglichst wenig Energie dabei verbraucht, durchgehend empfangsbereit zu sein. In regelmäßigen Abständen sendet es dabei ein „Ich lebe noch“-Signal an deinen Netzbetreiber und “lauscht” durchgehend auf den Mobilfunkfrequenzen, ob es aufgeweckt werden muss.
Na gut, kann man jetzt denken: „Macht das doch mit satellite auch: Verbindet euch durchgehend mit euren Servern und wenn ein Anruf ankommt, dann stellt ihn durch.“ Wäre schön, ist aber leider nicht praktikabel. Das Modem des Smartphones, welches die Internetverbindung aufbaut, verbraucht – abgesehen vom Display – den meisten Strom. Wenn wir satellite dauerhaft das Internet nutzen lassen würden, dann wäre dein Akku nach einem halben Tag leer. Das fändest du doof und wir auch.
So bringen wir dich und den Anrufer zusammen
Wie schaffen wir es, die Verbindung nur dann aufzubauen, wenn jemand mit dir sprechen möchte? Die kurze technische Antwort lautet: Push-Notifications.
Da das nicht jeder kennt, erkläre ich es mal nicht-technisch: satellite ist bei eingehenden Anrufen wie ein Vermittler. Sobald der Anrufer mit unseren Servern verbunden ist, müssen wir dafür sorgen, dass satellite aufwacht und den Anruf annimmt. Dies dauert natürlich, da die App – wie oben beschrieben – nicht in den Startlöchern steht, sondern seelig auf deinem Smartphone schläft (und damit Akku spart).
Um die Zeit zu überbrücken, spielen wir bereits eine Musik / einen Ton für den Anrufer ein. (Falls du sie nicht kennst, ruf dich einfach mal selber an ;)). Parallel dazu starten wir den Weckruf. Dafür haben wir satellite beim Start für eingehende Benachrichtigungen bei Apple bzw. Google registriert. Dort melden wir uns und versenden eine hoch priorisierte Benachrichtigung (die Push-Notification). Dieses Feature ist Teil des Betriebssystems von iOS und Android und ermöglicht es, schlafende Apps schnell und zuverlässig zu wecken.
Frisch aufgewacht kann satellite sich mit unseren Servern verbinden. Wenn die Verbindung steht, geben wir dem wartenden Anrufer ein Freizeichen und bei dir klingelt das Telefon klingeln.
Darum klappt die Zustellung des Anrufs nicht immer
Wenn die oben beschriebene Anruf-Vermittlung immer klappen würde, hätten wir 100% Erreichbarkeit und eine perfekte Telefonie-App. Aber leider ist die reale Welt nicht so schön simpel wie beschrieben. Der Unterschied zwischen Theorie und Praxis ... du kennst das bestimmt.
Vor allem bei der Anpassung von satellite für Android Q haben wir gemerkt, wie unterschiedlich die verschiedenen Gerätehersteller bei Android solche Benachrichtigungen von Google handhaben.
Wir mussten lernen, wie wir sinnvoll den eingehenden Anruf darstellen können, z.B. nur als kleines Popup, wenn du gerade in einer anderen App bist. Aber gleichzeitig sollte natürlich der Anruf auf dem ganzen Bildschirm zu sehen sein, wenn dein Gerät gesperrt ist.
Zudem kann auf dem Weg der Vermittlung sehr viel schiefgehen. Nur weil satellite durch diese „Push-Notifications“ aufgeweckt wird, heißt das noch nicht, dass unsere App verlässliches Internet hat, um den Anruf aufzubauen:
- Vielleicht bist du gerade in einem WLAN, das eine sehr langsame ausgehende Verbindung hat oder sogar VoIP-Telefonie unterdrückt.
- Vielleicht ist die „Aufwecken-Nachricht“ auch viel zu spät angekommen, weil du gerade in einem Funkloch warst.
- Oder was uns auch viel beschäftigt hat: Was ist, wenn der Anrufer bereits nach 1-2 Sekunden Klingeln aufgelegt hat?
Bessere Erreichbarkeit und eine Bimmelparty
Den beschriebenen Szenarien sind wir intensiv nachgegangen und haben dabei sowohl für iOS als auch für Android einiges beim Anrufaufbau verbessert.
Mit dem Update 1.1.8 haben wir uns dafür entschieden, dein Handy so früh wie möglich klingeln zu lassen. Vorher taten wir das erst, wenn die Vermittlung komplett abgeschlossen war. Seit zwei Wochen signalisiert dein Gerät den Anruf, sobald der Weckruf durch Apple oder Google kommt.
Dies kann zwar dazu führen, dass dein satellite nun öfter kurz klingelt, aber eigentlich ist ja auch genau das bei dem Anruf passiert – der Anrufer hat sich nach einer Handvoll Sekunden entschieden aufzulegen. Daher ist es vollkommen ok, wenn bei einer schlechten Verbindung dein Gerät in diesem Fall einige Sekunden klingelt, obwohl der Anrufer schon aufgelegt hat.
Und weil wir kein Update in den App Store oder Play Store schippen, dass wir nicht vorher selbst testen, haben wir gestern alle Kollegen verrückt gemacht und eine kleine “Bimmelparty” gefeiert.
Ich hoffe, dieser kleine Ausflug in die Technik von satellite hat dir Spaß gemacht. Für dich gibt’s jetzt nur noch ein ToDo: Ab in den App Store oder Play Store und das Update herunterladen!
Kommentare