Paketan
@lia-labs/bridge
Salin halaman
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 droppedrequest(method, params?, options?) diketik per metode: parameter yang diterimanya dan jawaban yang diselesaikannya berasal dari Methods tipe. Ini menolak dengan LiaError:
| Kode | Kapan |
|---|---|
not_in_lia | Di sini'tidak ada jembatan (bukan di dalam Lia, tidak ada mock). |
timeout | Lia 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. |
aborted | Anda signal dihentikan. Lia mungkin masih bertindak atas panggilan tersebut. |
too_large | Pesan melebihi 16,000 karakter, yang akan diabaikan oleh Lia. |
| Lia'kodenya sendiri | Apapun 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, onAny | Peristiwa. |
mockLia(options?), MOCK_INIT | Sebuah 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, PATIENT | Protokol'versi dan batasannya. |
resetForTests() | Menghapus setiap panggilan dan pendengar. |
| Jenis | Methods, 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