Zum Inhalt springen

Zustellung & Hintergrundbetrieb

TalX probiert die Wege in dieser Reihenfolge und nimmt den ersten, der trägt:

  1. Nearby – Bluetooth und WLAN-Direct, ohne jedes Netz
  2. Lokales Netz – Auffinden per mDNS, direkte TCP-Verbindung
  3. WebRTC – direkte Verbindung über das Internet
  4. Relay – Rückfall mit Store-and-Forward

Welcher Weg es geworden ist, steht später als kleines Symbol an der Nachricht. Eine ausführliche Erklärung mit Grafik gibt es unter Architektur.

Der Relay nimmt Nachrichten auch dann an, wenn der Empfänger offline ist: Er speichert den Ciphertext bis zu sieben Tage und stellt ihn beim nächsten Verbinden zu.

Vorher blieben Nachrichten liegen, bis beide Geräte gleichzeitig online waren – der Hauptgrund, warum TalX für Alltagskommunikation lange nicht taugte.

Der Relay sieht dabei ausschließlich Ciphertext. Lesen oder verändern kann er nichts. Was er trotzdem sieht, steht offen auf der Seite Grenzen.

Ist ein Gerät offline und die App geschlossen, kann ein Push-Signal es wecken. Das Signal enthält keinen Inhalt – es ist nur ein Weckruf. Die App holt die Nachricht danach selbst verschlüsselt ab.

Ohne Push läuft alles wie gehabt, nur ohne Weckruf. Auf Geräten, deren Hersteller Hintergrunddienste aggressiv beendet, kann das zu verzögertem Empfang führen.

Im Profil, standardmäßig an. Er entscheidet, ob TalX Geräte in der Nähe direkt erreichen darf – Bluetooth, lokales Netz, Sidelink – oder ausschließlich über die Online-Wege kommuniziert.

Ausschalten wirkt sofort: Die Ankündigung im lokalen Netz endet, stehende Verbindungen werden geschlossen, die Bluetooth-Suche stoppt. Einschalten startet alles ohne App-Neustart wieder. Die Online-Wege bleiben in beiden Fällen unberührt.

Ein Vordergrunddienst hält Suche, Empfang und Zustellung am Leben, auch wenn die App geschlossen ist. Transport, Zustellung und Datenbank leben in einer einzigen app-weiten Instanz, die sich Oberfläche und Dienst teilen – es gibt also genau eine Verbindungs- und Zustellinstanz, nicht zwei konkurrierende.

Die dauerhafte Benachrichtigung ist eine Android-Vorgabe für diese Art von Dienst. Sie zeigt live den Verbindungsstatus und ausstehende Zustellungen und hat einen Beenden-Knopf.

Einstellung „Im Hintergrund aktiv bleiben“ (Profil, Standard an): Ausschalten stoppt den Dienst sofort. Auch der Beenden-Knopf in der Benachrichtigung schaltet die Einstellung ab – sonst käme der Dienst beim nächsten App-Start ungefragt wieder.

  • Aggressive Akku-Optimierungen mancher Hersteller können den Dienst trotzdem beenden. Deshalb gibt es im Profil einen Knopf, der direkt zur System-Akkuliste führt.
  • Ein automatischer Start nach einem Geräteneustart ist für diese Dienstart ab Android 15 nicht erlaubt. Der Dienst startet daher mit dem ersten Öffnen der App nach dem Neustart.

Chatliste und Chat-Kopf zeigen, wer gerade erreichbar ist, und sonst, wann zuletzt – „vor 12 Min.“, „vor 3 Std.“, „gestern“, darüber mit Datum.

„Online“ heißt in einem P2P-System konkret gerade erreichbar: per Nahfunk in Reichweite oder über den Relay verbunden. Dafür schickt die App alle 45 Sekunden ein winziges Lebenszeichen an ihre Kontakte – aber nur, wenn überhaupt ein Transport verbunden ist. Besteht keine Verbindung, gibt es naturgemäß auch keine Präsenzangabe.

Diese Lebenszeichen laufen bewusst ohne Warteschlange und ohne Bestätigung und benutzen nicht den Nachrichten-Ratchet – sonst würden verlorene Pings die Schlüsselkette auseinanderlaufen lassen.

Im Profil steht ein Eintrag „5G Sidelink / ProSe (experimentell)“ mit dem Hinweis „Nicht verfügbar“. Das ist keine unfertige Funktion, sondern eine ehrliche Anzeige:

TalX ist architektonisch darauf vorbereitet, Direktfunk zwischen Geräten über die PC5-Schnittstelle zu nutzen. Android stellt normalen Apps dafür aber keine Schnittstelle bereit. Diese Funktechnik lebt im Modem und erfordert zusätzlich passende Hardware, Freigabe durch das Netz und je nach Betriebsart lizenziertes Spektrum. Zugriff hätte nur eine privilegierte System- oder Betreiber-App.

Der Transport bleibt daher inaktiv und meldet das auch so, statt es zu verschweigen. Sobald ein geeigneter Zugang existiert, funktioniert er ohne weitere Änderungen an der App.