LiaРазработчики

Пакеты

Низкий уровень. Типизированные вызовы и события через Lia-мост, таймауты и ограничения, и mockLia() для построения вне Lia.

Большинство приложений хотят @lia-labs/sdk, который построен на этом и повторно экспортирует все это. Используйте мост отдельно, чтобы создать собственный слой, или чтобы вызвать что-то, что SDK'не завершён.

npm install @lia-labs/bridge

#Протокол

Внутри Lia ваша страница работает в приложении Lia'веб-просмотр. Вызов - это JSON сообщение, которое страница постит с window.ReactNativeWebView.postMessage:

{ "lia": 1, "id": 7, "method": "haptic", "params": { "kind": "success" } }

Lia отвечает на каждый звонок один раз, через window.__lia.receive(...), с { id, ok: true, result } или { id, ok: false, error: { code, message? } }, и отправляет события тем же способом, что и { event, data }. Мост определяет window.__lia (заморожен, один раз на страницу) и соответствует ответам на вызовы по id.

#Вызов

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 dropped

request(method, params?, options?) типизируется по методу: параметры, которые он принимает, и ответ, с которым он разрешается, берутся из Methods типа. Он отклоняется с LiaError:

КодКогда
not_in_liaТам'нет моста (не внутри Lia, нет макета).
timeoutLia не может't ответить в течение 20 секунд (или ваш timeout. Вызовы, которые ждут человека (pay, объявления, диалоги, сканер, Face ID) не имеют ограничений, если вы не установите их.
abortedВаш signal был прерван. Lia все еще может действовать на вызов.
too_largeСообщение содержит более 16,000 символов, что Lia проигнорирует.
Lia'свои кодыКакой бы Lia ни ответил: см. Коды ошибок.
const controller = new AbortController();
const code = request('scanQr', { text: 'Scan a table' }, { signal: controller.signal, timeout: 60_000 });

#Слушание

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();

События имеют тип (Events): pause, resume, theme, viewport, fullscreenChanged, languageChanged, startParam, notificationsChanged, soundChanged, charge, ad, четыре *ButtonClicked события, и sensor ({ name, values }; SDK превращает его в каждый датчик's reading. Слушатель, который вызывает ошибку, записывается и не'не останавливать других.

#Все, что он экспортирует

Экспорт
isLia()Есть ли мост.
request(method, params?, options?)Типизированный вызов.
send(method, params?)Вызов без ожидания.
on, off, once, onAnyСобытия.
mockLia(options?), MOCK_INITПредставьте Lia: см. Локальная разработка.
emit(message)Передает сообщение странице, как будто Lia отправил его (для моков и тестов).
setDebug(on, logger?)Ведет журнал каждого вызова, ответа и события.
install()Начинает слушать сейчас; говорит, является ли window.__lia является этим пакетом's.
LiaError, isLiaError(error, code?)Ошибки.
PROTOCOL, DEFAULT_TIMEOUT, MAX_MESSAGE, PATIENTПротокол'версия и лимиты.
resetForTests()Забывает каждый вызов и слушатель.
ТипыMethods, MethodName, ParamsOf, ResultOf, Events, EventName, InitResult, ThemeParams и каждую форму Lia отправляет.

#Один на страницу

Две копии моста в одном пакете делят один набор вызовов и слушателей (хранятся в глобальном символе), поэтому ничего не сломается. Тег скрипта SDK может'не делиться: если это's уже на странице, мост предупреждает и может'не слышать Lia's ответы. Используйте один или другой.

Автоматически переведено. Английский — источник истины. Читать на английском

Введите, чтобы искать по каждой странице, методу и точке окончания.