Ein Bekannter von mir will die Fritz "SmartControl" Türkontakte dafür einsetzen, dass in einem Projekt für betreutes Wohnen das Öffnen von Notausgängen auf dem Smartphone des Betreuers signalisiert wird. Dazu sind 5 dieser Kontakte an einer Fritzbox angemeldet und das Handy des Betreuers ist im WLAN der Fritzbox eingebucht. Auf dem Samsung-Android-Handy läuft die Fritz-App.
Im Prinzip und zu Anfang läuft das auch wie erwartet, die Probleme kommen mit der Zeit. Anscheinend deaktiviert das OS die (im Hintergrund) laufende App nach einiger Zeit (20..30min), so dass keine Signalisierungen mehr erfolgen. Guckt man nach einiger Zeit gezielt auf die App, "flutschen" plötzlich veraltete Meldungen quasi gestapelt herein.
In der App findet sich keinerlei Einstellung zu dem Problem, im OS konnte auch nichts gefunden werden. Selbst die App "Dont Kill my App", die anscheinend extra gegen dieses Problem entwickelt wurde, löst es nur ungenügend: Dann wird die App zwar nicht mehr narkotisiert, aber nach genau 49 Signalisierungen kommen keine weiteren. Niemals. Da hilft nur Beenden und neu starten der App.
Mein Bekannter hat dann noch ein Set mit ähnlicher Funktion von IKEA gekauft, aber auch hier nach exakt 49 Meldungen Ende der Fahnenstange ...
Da andere Apps das ja irgendwie besser hinbekommen, wirds wohl an der App liegen.
Das Android und auch IOS bzgl. der Hintergrundaktivitäten von Apps sehr restriktiv sind, und sich das auch überhaupt nicht beeinflussen lässt, sollte ein kundiger Entwickler natürlich berücksichtigen.
Wenn der Service wirklich wichtig sein sollte, kommt man daran nicht vorbei:
Dienste im Vordergrund (Foreground Services):
So starten Sie einen Dienst im Vordergrund:
Erstellen Sie einen Dienst, der die gewünschte Aufgabe ausführt.
Rufen Sie in der Methode onStartCommand() des Dienstes ServiceCompat.startForeground() auf.
Vorteile von Diensten im Vordergrund:
Ermöglicht asynchrone Aufgaben, die für den Benutzer sichtbar sein müssen.
Reduziert die Wahrscheinlichkeit, dass der Dienst vom System beendet wird.
Nachteile: Erhöhter Akkuverbrauch.
Irgendeine Kröte wird der Nutzer schlucken müssen.
So starten Sie einen Dienst im Vordergrund:
Erstellen Sie einen Dienst, der die gewünschte Aufgabe ausführt.
Rufen Sie in der Methode onStartCommand() des Dienstes
ServiceCompat.startForeground() auf.
Ähm ... ja, klingt prinzipiell plausibel. Aber wie setze ich das denn als User mit einer fertigen App um? Gibts auf Android eine Shell oder sowas?
In der App findet sich keinerlei Einstellung zu dem Problem, im OS
konnte auch nichts gefunden werden
Sicher? Unter Android gibt es eine Einstellung, eine App nie abzuwürgen. Praktischerweise heißt die bei jeder Android -Version anders (z.B. "Batterie-Optimierung") und ist in den Einstellungen an anderer Stelle zu finden (in den Einstellungen der App, oder unter den Energie-Einstellungen). Das funktioniert dann durchaus.
Bei Samsung-Geräten gibt es diese Einstellung schon länger, wenn du das genaue Gerät und Android -Version verrätst kann man vielleicht genauer helfen...
Bei Samsung-Geräten gibt es diese Einstellung schon länger, wenn du das
genaue Gerät und Android -Version verrätst kann man vielleicht genauer
helfen...
Es handelt sich um ein frisch gekauftes Galaxy A16 5G, Modell SM-A166/B-DS,
mit Android 15. Die Fritz-App "SmartHome" ist vom 05-06.2025, Version 1.20.1.
Settings - Battery and device care - Battery - Background usage limits, und dann die App bei "Sleeping apps" und "Deep sleeping apps" entfernen und bei "Never sleeping apps" hinzufügen.
Es gibt allerdings einige Android-Apps, mit denen sich Anwendungen nach einem Zeitplan starten und beenden lassen. Was man versuchen könnte, wäre AutomateIt, Tasker, oder die Digital Wellbeing-Funktionen von Samsung.
Damit wäre es möglich die App zum Beispiel jede Stunde neu zu starten. Das ermöglicht zumindest einen der harten Work-Arounds zu realisieren.
Ob es noch weitere mögliche Lösungswege gibt, inklusive hier von weiteren Forenmitgliedern genannten, muss ich passen.
Das Android und auch IOS bzgl. der Hintergrundaktivitäten von Apps sehr
restriktiv sind, und sich das auch überhaupt nicht beeinflussen lässt,
sollte ein kundiger Entwickler natürlich berücksichtigen.
Es ist aber prinzipiell möglich, Apps so zu schreiben, daß sie externe Ereignisse mitbekommen und sich dadurch aktivieren/bemerkbar machen. Das schaffen einseits diverse Banking-2-Faktor-Apps, und andererseits auch die "Fritz"-App von AVM selbst, die als VoIP-Telephon mit der lokalen Fritzbox verbandelt ist. Keine der Apps muss aktiv im Vordergrund sein oder überhaupt laufen, damit die entsprechenden Mechanismen funktionieren.
Offensichtlich sehen die Betriebssysteme entsprechende "Hooks" vor, mit denen Apps sich für derartige Funktionalität im System anmelden können.
Es ist aber prinzipiell möglich, Apps so zu schreiben, daß sie externe
Ereignisse mitbekommen und sich dadurch aktivieren/bemerkbar machen.
Ja, theoretisch ist das so. Das Problem ist, dass viele Hersteller als Massnahme gegen unsaubere Apps, die ungewollt den Akku leeren, einfach mal alles abschiessen, was nicht entweder auf der Whitelist des Herstellers steht oder explizit (über mitunter schwer auffindbare Menüpunkte) freigegeben wird.
Ein typisches Beispiel dafür sind Messenger. Während WhatsApp meistens problemlos läuft, erfordern andere oft einen Konfigurations-Eingriff, damit sie dauerhaft im Hintergrund Nachrichten empfangen können.
Offensichtlich sehen die Betriebssysteme entsprechende "Hooks" vor, mit
denen Apps sich für derartige Funktionalität im System anmelden können.
Firebase Cloud Messaging - die Google Play Services auf dem Gerät halten die Verbindung zum Google Server aufrecht und empfangen Benachrichtigung und wecken die App entsprechend auf. Die App muss dann also überhaupt nicht laufen.
Warum muß das die Fritz-App sein?
In der FB kann man unter Smart Home/Automatisierung einfache Routinen erstellen. Da kann man dann auch eine Nachricht mit vorkonfiguriertem Inhalt an eine Tel.-Nr. schicken lassen. Also Türkontakt geht auf -> Anruf oder Nachricht absetzen.
Muß man dann eben 5 mal für jeden einzelnen Türkontakt machen, kann dafür aber auch in der o.g. Nachricht die Tür genau benennen.
Edit: Welcher Zeitverzug dabei entsteht ist mir nichht bekannt, läßt sich aber ermitteln.
In der FB kann man unter Smart Home/Automatisierung einfache Routinen
erstellen. Da kann man dann auch eine Nachricht mit vorkonfiguriertem
Inhalt an eine Tel.-Nr. schicken lassen.
Entweder das versuchen, mit der Fritz-Fon App könnte man durch einen Internen Anruf auch eventuelle Telefongebühren umgehen falls ansonsten keine Telefongeräte mit der FB genutzt werden.
Ansonsten gäbe es auch noch die Option anstelle eines Anrufes eine Push-Benachrichtigung auf ein Email-Adresse auszulösen, evtl kann ja eine der beiden Optionen das Limit mit den 49 Nachrichten umgehen...
Android betreibt sein WLAN-Interface recht gern im "Power Save"-Mode.
D.h. auch eine im Vordergrund laufende App, wird u.U. von ihrer
Nachrichtenquelle nicht erreicht.
Das kann man mit mit einem "Ping" auf die IP-Adresse des Telefons sehr
schön sehen und testen.