Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#3

AW: [Fmx, iOS] Bluetooth LE mit Background-central crasht nach 1 Minute

  Alt 22. Aug 2022, 08:40
Ich habe es meistens so lösen können dass ich möglichst auf echte Background-Modes verzichte.
Die scheinen die Hauptursache von Problemen zu sein.

Trotzdem habe ich Apps die im Bluetooth aktiv bleiben müssen, und die werden durch regelmäßige Sendungen von den IoT Geräten getriggert.
Das bluetooth-peripheral muss ich nicht mehr setzen, das war nur mal ein Test um die App wach zu halten, die App ist aber
ein bluetooth-central.
Es scheint in den letzteren OS Version auch stabiler geworden zu sein hinsichtlich BLE, Hintergrund-Standort brauche ich nicht mehr.

Der Ablauf im Hintergrund funktioniert bei mir so:
- Es muss immer im Vordergrund aufgebaut werden
- Es scheint bluetooth-central zu reichen
- Im Hintergrund kommen regelmäßige Sendungen vom IoT welche die App wach halten, von ca. 4-12 Sek.
- Wenn die App im Hintergrund das Gerät verliert habe ich noch kein automatisches Wiederverbinden vorgesehen, sondern eine Notification.
- Plötzliche Abstürze sehe ich hier selten, es scheint aber immer mal wieder vorzukommen.
Woran das liegt kann ich nicht wirklich sagen.

Ich habe über die Zeit auch an vielen iOS (und Android) Bugs rumgedocktert, oft scheint es einfach am iOS zu liegen.
Ein Neues SDK behebt das dann, ich vermeide trotzdem immer das Neueste einzusetzen, erst nachdem es gut getestet ist.
Eine gleichbleibende Qualität beim Debuggen sehe ich irgendwie nicht, mal fluppt Alles wie es soll, mal klemmt es hier und da und stürzt ab.
Das passiert komischerweise auch von einen Tag auf den Anderen, ohne das man etwas anfasst oder sogar den Rechner neustartet.
Ein Neustart aller Systeme hilft übrigens dann auch nichts, manchmal ist ein und dieselbe App superstabil, mal crasht es, ohne wirkliche Code-Änderung.
Eine Vermutung war schon früher immer, dass ein einfaches Umbauen der uses Units ( in eine andere Reihenfolge ) solche Probleme verhindern kann, also dass es durchaus auf die Linker-Reihenfolge ankommen kann.
Das hatte ich ein paar mal gesehen, dass ein Umstrukturieren von uses Crashes verhindern kann, konnte das aber nie wirklich nachweisen.
Deshalb versuche ich immer möglichst kleine Units zu halten, in der Hoffnung dass der Linker damit besser optimieren kann und vielleicht Bereichsgrenzen vermeiden kann.
Ich habe auch sehr oft kleine Tests und Demos gebaut, die sehr stabil Laufen.
Sobald ich dass dann in größere Anwendungen übernehme kommen wieder sporadische Probleme.
Insbesondere sehe ich immer noch dass bei Verlust der Verbindung die Characteristics oder Devices noch lange verbunden bleiben können und/oder Abstürzen.
Das Verhalten hängt bei mir aber auch stark von den Geräten selbst ab die ich verbinde, da habe ich eine ganze Reihe mit ganz verschiedenen MCU's und BLE-Stacks, wo ich nicht wirklich sagen kann was da der Unterschied bei der Verbindung, Parametern, Timing, usw. ist.
Nur das manche Geräte in derselben App problemlos Laufen und andere nicht, ohne das es einen ersichtlichen Unterschied gäbe.
  Mit Zitat antworten Zitat