Mobilní EGO a EPM v architektuře PWA

12.08.2026 | Webové aplikace

Výrobní hala, sklad, bezpečnost u brány — to je prostředí, kde má zaměstnanec telefon v ruce, často v rukavicích, s tlumeným světlem a nulovou trpělivostí s prohlížečovými menu navrženými pro myš. HIT4B3, naše platforma postavená v architektuře SPA na uniGUI, funguje skvěle na desktopu — ale mobilní zařízení jsou úplně jiný svět. Místo psaní samostatné aplikace (nativní nebo hybridní) jsme rozšířili stávající ekosystém o dedikovaný mobilní režim a zabalili ji jako progresivní webovou aplikaci.

 

Jeden backend, dvě rozhraní

uniGUI umožňuje spouštět klasický TUniForm (desktop) a mobilní TUnimForm (rozložení karet, velká tlačítka, dotyková gesta) paralelně v jednom projektu. Server rozpozná typ zařízení a poskytuje příslušnou sadu formulářů — obchodní logika, databáze Firebird, pooling spojení a i18n jsou sdíleny 1:1 mezi verzemi. Každý modul má svůj vlastní mobilní/:

  • EGO - Vstupní portál (Přihlašování, výběr společnosti, seznam webových odkazů)
  • EPM - Ochranný modul s QR skenováním a potvrzením úspěšnosti
  • _shr/mobile/ - Komponenty sdílené mezi moduly.

 

EGO jako brána SSO

Uživatel se jednou přihlásí do EGO a odtud spustí jednotlivé webové odkazy. Na mobilu se vybraný webový odkaz načítá v celoobrazovkovém snímku a EGO spravuje relaci na pozadí. Mechanismus je založen na jednorázových šifrovaných tokenech:

  1. EGO generuje jednorázový token – šifrovanou sadu příkazů
  2. uloží ho do databáze spolu s kontextem (společnost, jazyk, oprávnění)
  3. Otevře adresu cílového webového odkazu pomocí mobilního režimu a přepínání tokenů
  4. Cílový modul token dešifruje, ověří jej záznamem v databázi a automaticky přihlásí uživatele

To zajišťuje, že uživatel se nepřihlásí podruhé, i když pod tím běží samostatné aplikační procesy.

 

Nejtěžší problém: živá relace ve dvou aplikacích současně

V mobilním prohlížeči máme současně dvě nezávislé uniGUI relace — EGO a weblink v něm zabudovaný — a nativní událost OnSessionIdle má potvrzenou chybu a vůbec se nespouští pro TUnimForm. Řešení:

  • Counter místo události – Opakující se TUniTimer místo spoléhání na událost OnSessionIdle
  • Společný tep mezi snímky přes window.postMessage, takže jeden dotek kdekoli resetuje počítadlo nečinnosti obou relací
  • Konzistentní varovná obrazovka – modální okno s odpočítáváním před koncem relace; pokud EGO relace vyprší, zpráva také ukončí vloženou weblinkovou relaci

 

Poslední krok: PWA

Minimální manifest.json (jméno, ikony, samostatný režim bez adresního řádku) a záměrně "prázdný" Service Worker – HIT4B3 EGO je stavová aplikace s WebSocket relací, takže cachování obsahu by narušilo konzistenci relace. Service Worker existuje výhradně proto, aby splnil technické kritérium instalovatelnosti v Chrome/Android. Výsledek: telefon navrhuje "Přidat na domovskou obrazovku" a od té chvíle HIT4B3 funguje jako nativní aplikace — bez adresního řádku, bez vlastní ikony, bez samostatného mobilního kódu mimo prezentační vrstvu.

Tento přístup již dnes podporuje Mobile Protection Module (EPM) a bude základem pro budoucí webové aplikace spuštěné v mobilním režimu.

 

Úplný technický popis architektury — s podrobnostmi o implementaci token SSO, mechanismu keepalive a konfiguraci PWA — lze nalézt v článku na našich webových stránkách: HIT4B3 on the phone: jak jsme budovali mobilní režim EGO a EPM v architektuře PWA.

Tagy: #AI #Weblications

Komentáře (0)

Přidat komentář