Paquetes
@lia-labs/bridge
Copiar página
La capa más baja. Llamadas y eventos tipados sobre el puente de marco de Lia, los tiempos de espera y límites, y mockLia() para construir fuera de Lia.
La mayoría de las aplicaciones quieren @lia-labs/sdk, que está construida sobre esto y reexporta todo. Usa el puente por sí mismo para construir tu propia capa, o para llamar algo que el SDK no'envolver.
npm install @lia-labs/bridge#El protocolo
Dentro de Lia, su página se ejecuta en la aplicación Lia'su vista web. Una llamada es un mensaje JSON que la página publica con window.ReactNativeWebView.postMessage:
{ "lia": 1, "id": 7, "method": "haptic", "params": { "kind": "success" } }Lia responde a cada llamada una vez, a través de window.__lia.receive(...), con { id, ok: true, result } o { id, ok: false, error: { code, message? } }, y envía eventos de la misma forma que { event, data }. El puente define window.__lia (congelado, una vez por página) y coincide con respuestas a llamadas por id.
#Llamando
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?) se define por método: los parámetros que acepta y la respuesta con la que se resuelve provienen de la Methods tipo. Lo rechaza con un LiaError:
| Código | Cuándo |
|---|---|
not_in_lia | Allí'tu no tiene puente (no dentro de Lia, no hay simulación). |
timeout | Lia no puede't respuesta dentro de 20 segundos (o su timeout. Llamadas que esperan a la persona (pay, anuncios, diálogos, el escáner, Face ID) no tienen límite a menos que lo establezcas. |
aborted | Tu signal fue abortado. Lia aún puede actuar sobre la llamada. |
too_large | El mensaje tiene más de 16,000 caracteres, lo cual Lia ignoraría. |
| Lia'propios códigos | Lo que Lia respondió: vea Códigos de error. |
const controller = new AbortController();
const code = request('scanQr', { text: 'Scan a table' }, { signal: controller.signal, timeout: 60_000 });#Escuchando
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();Los eventos tienen tipo (Events): pause, resume, theme, viewport, fullscreenChanged, languageChanged, startParam, notificationsChanged, soundChanged, charge, ad, las cuatro *ButtonClicked eventos, y sensor ({ name, values }; la SDK lo convierte en cada sensor's reading. Un oyente que lanza una excepción se registra y no'no detener a los demás.
#Todo lo que exporta
| Exportar | |
|---|---|
isLia() | Si hay un puente. |
request(method, params?, options?) | Una llamada tipificada. |
send(method, params?) | Una llamada sin esperar. |
on, off, once, onAny | Eventos. |
mockLia(options?), MOCK_INIT | Un Lia ficticio: ver Desarrollo local. |
emit(message) | Entrega un mensaje a la página como si Lia lo hubiera enviado (para pruebas y mocks). |
setDebug(on, logger?) | Registra cada llamada, respuesta y evento. |
install() | Comienza a escuchar ahora; dice si window.__lia es este paquete's. |
LiaError, isLiaError(error, code?) | Errores. |
PROTOCOL, DEFAULT_TIMEOUT, MAX_MESSAGE, PATIENT | El protocolo'su versión y límites. |
resetForTests() | Olvida cada llamada y oyente. |
| Tipos | Methods, MethodName, ParamsOf, ResultOf, Events, EventName, InitResult, ThemeParams y cada forma Lia envía. |
#Una por página
Dos copias del puente en un solo paquete comparten un conjunto de llamadas y oyentes (guardados en un símbolo global), así que nada se rompe. La etiqueta de script SDK puede'no compartir: si es's ya en la página, el puente advierte y puede'escuchar Lia's respuestas. Use una u otra.
Traducido automáticamente. El inglés es la fuente de verdad. Leer en inglés