LiaPengembang

Paketan

Lapisan terendah. Panggilan dan peristiwa bertipe di atas jembatan frame Lia, timeout dan batasannya, dan mockLia() untuk membangun di luar Lia.

Kebanyakan aplikasi ingin @lia-labs/sdk, yang dibangun di atas ini dan mengimpor kembali semuanya. Gunakan jembatan itu sendiri untuk membangun lapisan Anda sendiri, atau untuk memanggil sesuatu yang SDK tidak'mengelilingi.

npm install @lia-labs/bridge

#Protokol

Di dalam Lia, halaman Anda berjalan dalam aplikasi Lia'tampilan web JSON. Panggilan adalah pesan JSON yang diposting halaman dengan window.ReactNativeWebView.postMessage:

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

Lia menjawab setiap panggilan sekali, melalui window.__lia.receive(...), dengan { id, ok: true, result } atau { id, ok: false, error: { code, message? } }, dan mengirimkan peristiwa dengan cara yang sama seperti { event, data }. Jembatan mendefinisikan window.__lia (dikunci, sekali per halaman) dan cocokkan jawaban dengan panggilan berdasarkan id.

#Memanggil

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?) diketik per metode: parameter yang diterimanya dan jawaban yang diselesaikannya berasal dari Methods tipe. Ini menolak dengan LiaError:

KodeKapan
not_in_liaDi sini'tidak ada jembatan (bukan di dalam Lia, tidak ada mock).
timeoutLia tidak bisa't menjawab dalam 20 detik (atau Anda timeout). Panggilan yang menunggu orang (pay, iklan, dialog, scanner, Face ID) tidak memiliki batas kecuali Anda menetapkan satu.
abortedAnda signal dihentikan. Lia mungkin masih bertindak atas panggilan tersebut.
too_largePesan melebihi 16,000 karakter, yang akan diabaikan oleh Lia.
Lia'kodenya sendiriApapun yang dijawab oleh Lia: lihat Kode kesalahan.
const controller = new AbortController();
const code = request('scanQr', { text: 'Scan a table' }, { signal: controller.signal, timeout: 60_000 });

#Mendengarkan

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

Peristiwa diberi tipe (Events): pause, resume, theme, viewport, fullscreenChanged, languageChanged, startParam, notificationsChanged, soundChanged, charge, ad, empat *ButtonClicked acara, dan sensor ({ name, values }; SDK mengubahnya menjadi setiap sensor's reading). Seorang pendengar yang melempar akan dicatat dan tidak'tidak menghentikan yang lain.

#Semua yang diekspor

Ekspor
isLia()Apakah jembatan tersedia.
request(method, params?, options?)Sebuah panggilan berjenis.
send(method, params?)Panggilan tanpa menunggu.
on, off, once, onAnyPeristiwa.
mockLia(options?), MOCK_INITSebuah Lia palsu: lihat Pengembangan lokal.
emit(message)Menyampaikan pesan ke halaman seolah-olah Lia mengirimkannya (untuk mock dan pengujian).
setDebug(on, logger?)Mencatat setiap panggilan, jawaban, dan peristiwa.
install()Mulai mendengarkan sekarang; mengatakan apakah window.__lia adalah paket ini's.
LiaError, isLiaError(error, code?)Kesalahan.
PROTOCOL, DEFAULT_TIMEOUT, MAX_MESSAGE, PATIENTProtokol'versi dan batasannya.
resetForTests()Menghapus setiap panggilan dan pendengar.
JenisMethods, MethodName, ParamsOf, ResultOf, Events, EventName, InitResult, ThemeParams dan setiap bentuk Lia mengirimkan.

#Satu per halaman

Dua salinan jembatan dalam satu paket berbagi satu set panggilan dan pendengar (dipegang pada simbol global), jadi tidak ada yang rusak. Tag skrip SDK dapat'tidak berbagi: jika itu's sudah ada di halaman, jembatan memberi peringatan dan bisa'tidak mendengar Lia'jawaban mereka. Gunakan satu atau yang lain.

Diterjemahkan otomatis. Bahasa Inggris adalah sumber kebenaran. Baca dalam Bahasa Inggris

Ketik untuk mencari setiap halaman, metode, dan titik akhir.