Полноэкранный режим и возможности устройства
Что это
Мини-приложение может занять весь экран, вертикально или горизонтально, и пользоваться самим телефоном: геопозицией, датчиками движения, отпечатком пальца или лицом. Есть и помощники попроще: тактильный отклик, сканер QR-кодов, хранилища. Геопозиция и биометрия работают, только когда человек разрешил их в окне Telegram.
Как сделать
- Полный экран: добавь к ссылке `&mode=fullscreen` или вызови… Полный экран: добавь к ссылке `&mode=fullscreen` или вызови `requestFullscreen`; `lockOrientation` закрепит текущую ориентацию.
- Геопозиция: `LocationManager.init`, затем `getLocation`. Если человек отказал, данных не будет.
- Движение: запусти `Accelerometer`, `DeviceOrientation` (с `need_absolute` —… Движение: запусти `Accelerometer`, `DeviceOrientation` (с `need_absolute` — данные для компаса) или `Gyroscope` с параметром `refresh_rate`.
- Биометрия: `BiometricManager.init`, затем `requestAccess` и `authenticate`, каждый раз с короткой причиной.
- Помощники: `HapticFeedback`, `showScanQrPopup` и хранилища `CloudStorage`, `DeviceStorage` или `SecureStorage`.
- Проверь, что Telegram у человека это умеет: полному экрану, геопозиции и датчикам нужен `isVersionAtLeast('8.0')`.
Осторожно
- Полноэкранный режим может не включиться (ошибка `UNSUPPORTED`), а шапка в нём прозрачная: держи кнопки внутри `safeAreaInset` и `contentSafeAreaInset`.
- `refresh_rate` — от 20 до 1000 мс (по умолчанию 1000), и не каждое устройство его выдерживает.
- Причина для биометрии — до 128 символов.
- После отказа `openSettings` откроет человеку настройки, но только по нажатию внутри приложения.
- Хранилища на одного человека: `CloudStorage` — 1024 записи до 4096 символов, `DeviceStorage` — 5 МБ, `SecureStorage` — 10 записей.
С Gem
Gem пока не включает проектам полноэкранный режим и не работает с геопозицией, датчиками и биометрией. Рядом есть /newapp в @gembot: Gem соберёт по описанию небольшое мини-приложение в своей песочнице, со своей ссылкой.
Источники
- https://core.telegram.org/bots/webapps#initializing-mini-apps
- https://core.telegram.org/api/links#direct-mini-app-links
- https://telegram.org/blog/fullscreen-miniapps-and-more