Из вашего нативного приложения можно открыть приложение ExodeBiz сразу на нужном экране —
выбрать школу, при необходимости авторизовать пользователя по токену и открыть урок. Достаточно открыть
ссылку-схему штатным способом (
Intent.ACTION_VIEW на Android / UIApplication.open на iOS).Формат ссылки
Deep link использует URL-схему приложенияexodebizapp://. Все параметры кладутся в один параметр
data — это URL-кодированная query-строка:
data:
Всегда
open-page.Домен (FQDN) школы, например
my-school.com или my-school.exode.biz.Идентификатор экрана. Для урока — см. раздел «Открыть урок».
JSON с параметрами экрана, например
{"page":"1","courseId":"42","lessonId":"123"}.Список дополнительных действий (например авторизация). См. раздел «extra».
Открыть урок
| Поле | Значение |
|---|---|
pageId | /courses/:page([0-9]+)/:courseId([0-9]+)/study/:lessonId([0-9]+) |
params | {"page":"1","courseId":"<ID курса>","lessonId":"<ID урока>"} |
page— страница в списке курсов; для перехода на урок укажите"1".courseId,lessonId— идентификаторы курса и урока в вашей школе.
DOMAIN, COURSE_ID, LESSON_ID:
Другие экраны
МеняяpageId и params, можно открыть любой экран:
| Экран | pageId | params |
|---|---|---|
| Урок | /courses/:page([0-9]+)/:courseId([0-9]+)/study/:lessonId([0-9]+) | {"page":"1","courseId":"42","lessonId":"123"} |
| Курс | /course/:courseId([0-9_A-Za-z]+) | {"courseId":"42"} |
extra — вложенные действия (авторизация)
Параметрextra позволяет прокинуть в приложение список действий, которые выполнятся вместе с
открытием — например авторизацию по токену. extra — это base64url(JSON.stringify({ actions: [...] })).
Структура JSON:
type | Поля | Описание |
|---|---|---|
login-by-token | token | Авторизация пользователя по токену |
open-page | pageId, params | Навигация на экран |
Порядок выполнения гарантирован: сначала — действия из
extra (по порядку в массиве), затем —
навигация из open-page. То есть ссылка open-page + extra:[{login-by-token}] даёт ровно:
открыть приложение → авторизоваться → открыть страницу.Получите токен сессии пользователя
Токен создаётся методом Создание токена сессии
(
POST /saas/v2/user/session/auth-token). Возьмите значение поля token из ответа.Соберите extra
extra = base64url(JSON.stringify({ actions: [{ type: 'login-by-token', token }] })).Пример (с placeholder-токеном USER_TOKEN):Используйте именно base64url (
-/_ вместо +//, без =-padding) — обычный base64 может
некорректно пройти через query-строку.Сборка и открытие ссылки в коде
Поведение
- Deep link срабатывает только если приложение установлено. Если нет — ОС ничего не откроет:
обработайте это сами и покажите fallback (магазин приложений или сайт школы). На Android ловите
ActivityNotFoundException, на iOS —success == falseв completion-handleropen. - Если школа ещё не была добавлена в приложении — она добавится автоматически и станет активной.
- Навигация подчиняется обычной авторизации: без
extra-логина неавторизованный пользователь увидит экран входа.
Диагностика
| Симптом | Причина / решение |
|---|---|
| Ничего не происходит при открытии ссылки | Приложение не установлено, либо контекст не распознаёт кастомные схемы. Реализуйте fallback. |
| Открылось не на том уроке | Проверьте pageId (символ-в-символ) и значения в params; убедитесь, что data собран корректно (двойное кодирование). |
| «Школа не найдена» | Неверный domain. Укажите точный FQDN школы. |
| Открывается экран входа | Пользователь не авторизован / нет доступа. Для автологина используйте extra с login-by-token. |