Paquets
@lia-labs/bridge
Copier la page
La couche la plus basse. Appels et événements typés via le pont de cadre Lia, les délais d'attente et les limites, et mockLia() pour construire en dehors de Lia.
La plupart des applications veulent @lia-labs/sdk, qui est construit sur cela et réexporte tout. Utilisez le pont seul pour construire votre propre couche, ou pour appeler quelque chose que SDK'enveloppe.
npm install @lia-labs/bridge#Le protocole
À l'intérieur de Lia, votre page s'exécute dans l'application Lia'vue web. Un appel est un message JSON que la page poste avec window.ReactNativeWebView.postMessage:
{ "lia": 1, "id": 7, "method": "haptic", "params": { "kind": "success" } }Lia répond à chaque appel une fois, via window.__lia.receive(...), avec { id, ok: true, result } ou { id, ok: false, error: { code, message? } }, et envoie les événements de la même manière que { event, data }. Le pont définit window.__lia (gelé, une fois par page) et correspond aux réponses aux appels par id.
#Appel
import { isLia, request, send } from '@lia-labs/bridge';
isLia(); // true inside the Lia app (or with mockLia)
const me = await request('init');
const { best } = await request('submitScore', { score: 1280 });
send('ready'); // without waiting for the answer; failures are droppedrequest(method, params?, options?) est typé par méthode : les paramètres qu'il prend et la réponse qu'il résout proviennent du Methods type. Elle refuse avec un LiaError:
| Code | Quand |
|---|---|
not_in_lia | Il y a'le non pont (pas à l'intérieur de Lia, pas de simulation). |
timeout | Lia n'a pas't répondre dans 20 secondes (ou votre timeout). Les appels qui attendent la personne (pay, les publicités, les boîtes de dialogue, le lecteur, Face ID) n'ont pas de limite à moins que vous n'en fixiez une. |
aborted | Votre signal a été annulé. Lia peut toujours agir sur l'appel. |
too_large | Le message dépasse 16,000 caractères, ce que Lia ignorerait. |
| Lia'ses propres codes | Quel que soit le réponse de Lia : voir Codes d'erreur. |
const controller = new AbortController();
const code = request('scanQr', { text: 'Scan a table' }, { signal: controller.signal, timeout: 60_000 });#Écoute
import { on, once, onAny, off } from '@lia-labs/bridge';
const stop = on('theme', ({ colorScheme, theme }) => repaint(colorScheme, theme));
once('resume', () => refresh());
onAny((event, data) => console.log(event, data));
stop();Les événements sont typés (Events): pause, resume, theme, viewport, fullscreenChanged, languageChanged, startParam, notificationsChanged, soundChanged, charge, ad, les quatre *ButtonClicked événements, et sensor ({ name, values }; la SDK le transforme en chaque capteur's reading). Un écouteur qui lance une erreur est enregistré et ne'arrête les autres.
#Tout ce qu'il exporte
| Exporter | |
|---|---|
isLia() | Si un pont est présent. |
request(method, params?, options?) | Un appel typé. |
send(method, params?) | Un appel sans attendre. |
on, off, once, onAny | Événements. |
mockLia(options?), MOCK_INIT | Un Lia fictif : voir Développement local. |
emit(message) | Transmet un message à la page comme si Lia l'avait envoyé (pour les tests et les maquettes). |
setDebug(on, logger?) | Enregistre chaque appel, réponse et événement. |
install() | Commence à écouter maintenant ; dit si window.__lia est ce package's. |
LiaError, isLiaError(error, code?) | Erreurs. |
PROTOCOL, DEFAULT_TIMEOUT, MAX_MESSAGE, PATIENT | Le protocole'version et les limites. |
resetForTests() | Oublie chaque appel et chaque écouteur. |
| Types | Methods, MethodName, ParamsOf, ResultOf, Events, EventName, InitResult, ThemeParams et chaque forme Lia envoie. |
#Un par page
Deux copies du pont dans un seul bundle partagent un ensemble d'appels et d'écouteurs (stockés sur un symbole global), donc rien ne casse. La balise script SDK peut'partage : si c'est'déjà sur la page, le pont avertit et peut'ne pas entendre Lia'les réponses. Utilisez l'une ou l'autre.
Traduit automatiquement. L'anglais est la source de vérité. Lire en anglais