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:
- EGO generuje jednorázový token – šifrovanou sadu příkazů
- uloží ho do databáze spolu s kontextem (společnost, jazyk, oprávnění)
- Otevře adresu cílového webového odkazu pomocí mobilního režimu a přepínání tokenů
- 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.
Komentáře (0)
Přidat komentář