Android · Zebra · WebView

Vonalkód-olvasó és webes ERP között

A Billman ERP for Zebra egy köztes alkalmazás Zebra ipari Android eszközökre. A DataWedge profilt indításkor maga állítja be, a beolvasott vonalkódot egyetlen JavaScript-hívással átadja a betöltött weboldalnak — a callback neve server-oldalról felülírható —, és háttérben MQTT-n érkező push értesítéseket figyel.

Verzió 2.4.5 · minSdk 33 · csomag hu.billman.erp.android.zebra

Mit csinál az alkalmazás?

A telepített WebView betölti az ERP-t, a vonalkódot a böngészőben futó kódnak adja át. A többi szolgáltatás — MQTT, PDF, Basic Auth, kényszerített frissítés — a háttérben dolgozik.

WebView wrapper

A beállított URL betöltése teljes képernyőn. Hálózati hiba esetén automatikus újrapróbálkozás 3 másodpercenként, helyreállás után értesítés.

DataWedge automatikus konfiguráció

Az app indításkor maga hozza létre a Billman profilt, hozzárendeli magát, és bekapcsolja az Intent Output plugint. A beolvasott vonalkódot a weboldal onScan(data) függvényének adja át — a hívandó függvény neve szerveroldali konfiggal (zebra.jsonscan_callback) felülírható.

MQTT push szolgáltatás

Foreground service tartja a kapcsolatot a brokerrel. Üzenet érkezésekor 500 ms rezgés, hangjelzés és toast — akkor is, ha az eszköz alvó állapotban van.

Server-side konfiguráció

A <url>/zebra.json fájl indításkor és mentés után automatikusan letöltődik. Csak a kiküldött mezők íródnak felül — a JSON-ban nem szereplő értékek (köztük a helyileg megadott felhasználónév és jelszó) érintetlenek maradnak.

Beépített PDF megjelenítő

PDF linkek a PDF.js viewerben nyílnak meg, a session cookie-k megtartása mellett. Más sémájú linkek (tel:, mailto:) a rendszer alkalmazásába kerülnek.

Verzió-kényszerítés

Ha a min_version_code nagyobb a telepítettnél, az app indításkor nem elnyomható párbeszédet mutat — Play Store vagy kilépés.

DataWedge: az app állítja be

Az alkalmazás indításkor automatikusan elvégzi a DataWedge-konfigurációt a SET_CONFIG API-n keresztül. Külön telepítési lépés a kezelőtől nem kell — a táblázat csak a referencia értékeket mutatja, ezeket az app maga írja be.

BeállításÉrték
Profil neveBillman
MódCREATE_IF_NOT_EXIST — csak akkor hozza létre, ha még nincs
Társított apphu.billman.erp.android.zebra (minden activity)
Intent actionhu.billman.SCAN
Intent categoryüres
Intent deliveryBroadcast Intent
Keystroke Outputkikapcsolva (ne pötyögje a fókuszba)

Mi kerül a weboldalra?

A beolvasott szöveget az app a böngésző-oldali callback-nek adja át. A függvény neve alapból onScan, de a zebra.json scan_callback mezőjével server-oldalról felülírható — például egy másik nevű kezelőre, oldalanként eltérő logikára.

// Alapértelmezett — ezt hívja az app
window.onScan = function (data) {
    console.log('Beolvasott kód:', data);
};

// zebra.json-ban: { "scan_callback": "handler" }
// → ettől kezdve az app ezt hívja:
window.handler = function (data) { /* ... */ };

Ha a megadott függvény nincs definiálva a betöltött oldalon, a beolvasás csendben elveszik — nincs kivétel és nincs alapértelmezett fallback.

Server-side zebra.json

A megadott web-cím gyökerében elhelyezett JSON fájl felülírja a kiválasztott alkalmazás-beállításokat. Minden mező opcionális; a Beállítások képernyő ekkor megjeleníti a Konfiguráció letöltése gombot.

Így a konfiguráció távolról vezérelhető: egyetlen JSON-fájl szerkesztésével az összes telepített eszköz egységesen átáll. Raktári flottánál nem kell készülékenként beállítani sem a brokert, sem a komissiózó URL-t, sem a callback nevét — egyszer a szerverre kerül, mindenhol érvényes. A min_version_code mezővel a régebbi telepítések kötelezően frissítésre kényszeríthetők, így nem ragadnak benn elavult kliensek a flottában.

MezőJelentés
min_version_codeA minimum elvárt versionCode. Régebbi telepítésnél kötelező frissítés.
min_app_versionA frissítési párbeszédben megjelenő szöveges verzió.
order_picker_urlA komissiózó (order picker) képernyő külön URL-je.
mqtt_serverMQTT broker URL, pl. tcp://host:1883.
mqtt_topicA feliratkozott topic neve.
mqtt_payloadTrigger payload. Üresen bármely üzenet riaszt.
mqtt_soundsystem · alarm · none
scan_callbackA weboldalon hívandó függvény neve. Alapértelmezett: onScan.
{
    "min_version_code": 19,
    "order_picker_url": "https://billman.hu/order-picker",
    "mqtt_server": "tcp://broker.example:1883",
    "mqtt_topic": "billman/notifications",
    "mqtt_payload": "",
    "mqtt_sound": "system",
    "scan_callback": "onScan"
}

A frissítés szelektív: csak azokat az értékeket írja felül, amelyeket a JSON ténylegesen kiküld. A többi user-szinten, helyi beállításként érintetlen marad — a felhasználónév és jelszó például soha nem íródik felül szerverről. Ha a szerver nem elérhető vagy a fájl hiányzik, a teljes helyi konfiguráció megmarad. A változások egyébként azonnal érvénybe lépnek, újraindítás nélkül.

Komissiós esemény értesítés (MQTT)

Ha a Beállításokban megadott egy MQTT brokert és topicot, az alkalmazás a háttérben is figyel — akkor is, ha a képernyő ki van kapcsolva, vagy másik app van előtérben.

Hangmódok

  • system — rendszer értesítési hang
  • alarm — riasztási hang, zajos környezetbe
  • none — csak rezgés és toast

Trigger logika

Ha a Payload mező ki van töltve, csak a pontos egyezés jelez. Üres mező esetén minden beérkező üzenet riasztást vált ki.

A foreground service tartós értesítést mutat: „Picker listener active”.

Letöltés és frissítés

Az alkalmazás csomagneve hu.billman.erp.android.zebra. A frissítés a Google Play Store-on keresztül érkezik; a kényszerített frissítést a min_version_code mező vezérli.

Verzió
2.4.5
versionCode
19
Minimum SDK
Android 13 (API 33)
Cél SDK
Android 14 (API 36)
Nyelvek
magyar · angol · német

Tesztelőket keresünk

Az alkalmazás jelenleg zárt tesztelési szakaszban van. A Play Store csak a felvett tesztelői körnek teszi elérhetővé a buildet — előzetes regisztráció nélkül a letöltés nem indítható.

Zebra ipari Android eszközt üzemeltető üzemi környezetekből várjuk a jelentkezést a kapcsolati űrlapon. A jelentkezésben add meg a Google Play Áruházban használt e-mail címedet — ha többen szeretnétek tesztelni, írjátok be az üzenetbe az összes Play-fiók e-mail címét.

Kapcsolatfelvétel