Pacotes
@lia-labs/bridge
Copiar página
A camada mais baixa. Chamadas e eventos tipados sobre o puente de quadro Lia, os tempos limite e limites, e mockLia() para construir fora de Lia.
A maioria dos aplicativos quer @lia-labs/sdk, que é construído com isso e re-exporta tudo. Use o bridge sozinho para construir sua própria camada, ou para chamar algo que o SDK não'para envolver.
npm install @lia-labs/bridge#O protocolo
Dentro de Lia, sua página roda no app Lia'sua visualização da web. Uma chamada é uma mensagem JSON que a página posta com window.ReactNativeWebView.postMessage:
{ "lia": 1, "id": 7, "method": "haptic", "params": { "kind": "success" } }Lia responde a cada chamada uma vez, através de window.__lia.receive(...), com { id, ok: true, result } ou { id, ok: false, error: { code, message? } }, e envia eventos da mesma forma que { event, data }. A ponte define window.__lia (congelado, uma vez por página) e corresponde respostas a chamadas por id.
#Chamando
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?) é digitado por método: os parâmetros que ele recebe e a resposta que resolve vêm do Methods tipo. Ele rejeita com um LiaError:
| Código | Quando |
|---|---|
not_in_lia | Aí's não tem ponte (não dentro de Lia, sem mock). |
timeout | Lia não pode't resposta dentro de 20 segundos (ou seu timeout). Chamadas que esperam pela pessoa (pay, anúncios, diálogos, o scanner, Face ID) não têm limite a menos que você defina um. |
aborted | Seu signal foi abortado. Lia pode ainda agir sobre a chamada. |
too_large | A mensagem tem mais de 16,000 caracteres, o que Lia ignoraria. |
| Lia'seu próprio códigos | O que Lia respondeu: veja Códigos de erro. |
const controller = new AbortController();
const code = request('scanQr', { text: 'Scan a table' }, { signal: controller.signal, timeout: 60_000 });#Escuta
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();Eventos são tipados (Events): pause, resume, theme, viewport, fullscreenChanged, languageChanged, startParam, notificationsChanged, soundChanged, charge, ad, os quatro *ButtonClicked eventos, e sensor ({ name, values }; o SDK o transforma em cada sensor's reading). Um ouvinte que lança uma exceção é registrado e não'para parar os outros.
#Tudo o que ele exporta
| Exportar | |
|---|---|
isLia() | Se há uma ponte. |
request(method, params?, options?) | Uma chamada tipada. |
send(method, params?) | Uma chamada sem esperar. |
on, off, once, onAny | Eventos. |
mockLia(options?), MOCK_INIT | Um Lia fictício: veja Desenvolvimento local. |
emit(message) | Entrega uma mensagem à página como se Lia tivesse enviado (para mocks e testes). |
setDebug(on, logger?) | Registra todas as chamadas, respostas e eventos. |
install() | Começa a ouvir agora; diz se window.__lia é este pacote's. |
LiaError, isLiaError(error, code?) | Erros. |
PROTOCOL, DEFAULT_TIMEOUT, MAX_MESSAGE, PATIENT | O protocolo'sua versão e limites. |
resetForTests() | Esquece toda chamada e ouvinte. |
| Tipos | Methods, MethodName, ParamsOf, ResultOf, Events, EventName, InitResult, ThemeParams e todas as formas Lia envia. |
#Um por página
Duas cópias da ponte em um único pacote compartilham um conjunto de chamadas e ouvintes (mantido em um símbolo global), então nada quebra. A tag script SDK pode'para compartilhar: se for's já estão na página, o bridge avisa e pode'ouvir Lia's respostas. Use uma ou outra.
Traduzido automaticamente. O inglês é a fonte de verdade. Leia em inglês