SDK справка
Устройство
Копировать страницу
Тактильная обратная связь, сканер QR, буфер обмена, ссылки, собственные экраны Lia, Face ID и Touch ID, и датчики движения.
#Тактильная обратная связь
#Lia.haptic(kind)
Касание, которое чувствует человек. Решается с null.
Lia.haptic("success");kind | Похоже на |
|---|---|
"light" (по умолчанию), "medium", "heavy", "rigid", "soft" | Касание, от легкого до тяжелого |
"success", "warning", "error" | Результат |
"selection" | Щелчок, для выбора изменения |
Неизвестная игра играет "light". Каждое тактильное ощущение — это обратный путь к Lia, поэтому не'не играть одну каждую кадр игры.
#Сканирование и буфер обмена
#Lia.scanQr(options)
Открывает Lia's QR сканер над вашим приложением. Решается с кодом'текст, или null если человек закрыл его.
const text = await Lia.scanQr({ text: "Scan the code on the table" });| Опция | Тип | |
|---|---|---|
text | строка | Необязательно, под сканером'окно, до 64 символов. |
Ошибки: bad_text, busy.
#Lia.copyText(text)
Копирует текст в буфер обмена, и Lia говорит об этом'скопировано. Возвращает null.
| Параметр | Тип | |
|---|---|---|
text | строка | До 4096 символов. |
Ошибки: bad_text, unsupported.
#Lia.readClipboard()
Текст на буфере обмена, или null. На iPhone телефон сначала спрашивает человека.
const pasted = await Lia.readClipboard();#Ссылки
#Lia.openLink(url, options)
Открывает веб-страницу. Ваш фрейм показывает только ваши собственные страницы, поэтому используйте это для любого другого сайта.
Lia.openLink("https://example.com/terms"); // in Lia's in-app browser, over your app
Lia.openLink("https://example.com", { external: true }); // outside Lia, in the phone's browser| Параметр | Тип | |
|---|---|---|
url | строка | Адрес https, до 2048 символов. |
options.external | логическое значение | Откройте его вне Lia. |
Решается с null когда встроенный браузер приложения закрывается (или сразу для external. Ошибки: bad_url.
#Lia.openLiaLink(screen)
Открывает одну из Lia'свои экраны. Страницы сначала закрывают ваше приложение (спрашивая, если вы включили подтверждение закрытия и открывают их как самих себя; листы открываются поверх вашего приложения, которое остается.
Lia.openLiaLink("mine"); // Lia's mining sheet, over your appscreen | Открывает | Ваше приложение |
|---|---|---|
"invite" | Пригласите друзей в Lia | Закрывает |
"strides" | Strides | Закрывает |
"activity" | Человек's активность | Закрывает |
"send" | Отправить $LIA | Закрывает |
"apps" | Apps Center | Закрывает |
"streak" | Серия проверок | Остается |
"mine" | Добыча | Остается |
"receive" | Получить $LIA | Остается |
Решается с { closed }: true если ваше приложение было закрыто, false если он остался (или человек решил остаться). Ошибки: unknown_screen, bad_screen.
#Лицо ID и Касание ID
#Lia.biometric
Попросите человека подтвердить это'их, с телефоном's Лицо ID, касание ID или отпечаток пальца, перед чем-то чувствительным в вашем приложении. Ваше приложение узнает только, прошли ли они.
#Lia.biometric.init()
Может ли телефон это сделать. Возвращает { available, type }: available истинно, когда телефон имеет его и'настроены; type это "face", "finger" или "unknown".
#Lia.biometric.authenticate(options)
Спрашивает человека подтвердить. Возвращает { authenticated }. Если они могут'не использовать биометрию, телефон может предложить свой пароль.
const { available } = await Lia.biometric.init();
if (available) {
const { authenticated } = await Lia.biometric.authenticate({ reason: "Confirm it's you to open your vault" });
}| Опция | Тип | |
|---|---|---|
reason | строка | Необязательно, отображается телефоном, до 128 символов. Lia'свои слова, когда их оставляют в стороне. |
Ошибки: unsupported, busy, bad_reason.
#Движение
Три датчика, каждый с start, stop, isStarted и его последним чтением. Чтения поступают в виде событий, пока датчик работает; он останавливается, когда ваше приложение закрывается. Все три являются необязательными на телефонах: start() неудача с unsupported где есть'нет.
| Датчик | Чтение | Единицы | Событие |
|---|---|---|---|
Lia.accelerometer | x, y, z | м/с², включая гравитацию | "accelerometerChanged" |
Lia.gyroscope | x, y, z | Скорость вращения, радиан в секунду | "gyroscopeChanged" |
Lia.deviceOrientation | alpha, beta, gamma | Углы в радианах | "deviceOrientationChanged" |
await Lia.deviceOrientation.start({ refreshRate: 50 });
Lia.on("deviceOrientationChanged", function (r) {
steer(r.gamma); // tilting left and right
});
// later
Lia.deviceOrientation.stop();#Lia.accelerometer
| Член | |
|---|---|
start(options) | Начинает измерения. options.refreshRate: 20 до 1000 мс между измерениями, 1000 по умолчанию. Возвращает true; также срабатывает "accelerometerStarted". Ошибки: bad_refresh_rate, unsupported. |
stop() | Останавливает их. Решает с true; также срабатывает "accelerometerStopped". |
isStarted | Оно'ваше выполнение. |
x, y, z | Последнее чтение, null до первого. |
#Lia.gyroscope
То же самое Lia.accelerometer, с x, y и z скорости вращения.
#Lia.deviceOrientation
То же самое, с alpha, beta и gamma.
#Захват фото и видео
SDK 1.9 добавит нативный захват в следующую сборку мобильного приложения Lia. Проверьте возможность, возвращаемую init(); установка более новой JavaScript SDK не добавляет поддержку камеры в более старое мобильное приложение.
const session = await Lia.init();
if (session.capabilities?.capturePhoto) {
const media = await Lia.capturePhoto(); // or Lia.captureVideo()
if (!media.cancelled) {
try {
const parts = [];
let offset = 0;
for (;;) {
const chunk = await Lia.readMedia(media.id, offset);
parts.push(Uint8Array.from(atob(chunk.base64), c => c.charCodeAt(0)));
offset = chunk.nextOffset;
if (chunk.eof) break;
// Stay below the shared bridge rate limit.
await new Promise(resolve => setTimeout(resolve, 100));
}
const blob = new Blob(parts, { type: media.mimeType });
// Preview with URL.createObjectURL(blob), or upload after the user confirms.
// Revoke preview object URLs when finished. No upload occurs automatically.
} finally {
await Lia.releaseMedia(media.id);
}
}
}capturePhoto() и captureVideo() отображение Lia'с согласительным листом, названием запрашивающего приложения, за которым следует система камеры. Доступ к камере запрашивается только тогда; видео также требует разрешения микрофона. Отмена возвращает { cancelled: true }. Результат захвата в противном случае содержит id, kind, mimeType, size в байтах, width, height и duration в миллисекундах или null. Нет пути к файлу устройства или ответа EXIF.
Фото ограничены 8 MiB. Видео ограничены 30 секундами и 30 MiB. Каждое открытое приложение может сохранять три захвата; хэндлы истекают через десять минут и удаляются при освобождении или закрытии приложения. readMedia(id, offset) возвращает до 48 KiB как base64, с nextOffset и eof. Хэндл принадлежит только экземпляру приложения, который его создал. Захват не предоставляет доступ к фото-библиотеке или камере в фоновом режиме.
Хэндл unknown_method на более старых мобильных сборках, camera_denied, microphone_denied, media_limit, media_too_large, media_expired, bad_offset и совместно busy ошибка. Направьте пользователей в Настройки системы, если они отклонили разрешение. Загрузка захваченного контента, уведомления о конфиденциальности, хранение и модерация остаются на усмотрение разработчика'отвечает за это. Пакет npm SDK экспортирует те же четыре метода; его локальная мока по умолчанию отменяет захват и никогда не открывает настоящую камеру.
Автоматически переведено. Английский — источник истины. Читать на английском