Мобильная интеграция турниров и квестов
1) Архитектура и точки встраивания
Навигация: лобби → вкладка «Турниры» / «Квесты»; быстрый доступ из хедера (иконка с бейджем прогресса).
Диплинки: `app://event/{id}`, `app://mission/{id}`, `app://leaderboard/{id}?tab=my` — единый роутер для in-app, пушей и веб-виджетов.
Встраивание контента:- Native/React Native/Flutter для лидербордов, карточек миссий и таймеров.
- WebView — только для статичного инфо/правил; нельзя рендерить критичный real-time.
2) Карточка миссии: мобильная анатомия
Заголовок ≤ 2 строк, иконка типа, краткое описание (что/где/сколько времени).
Прогресс-бар + число (2/3), оценка времени (≈ 20–25 мин), сложность (•).
Награды: токены/косметика мини-иконами, без «денежного» подтекста.
CTA одна: «Начать/Продолжить/Забрать». Secondary: «Сменить» (cooldown), «Подробнее».
Таймер до дедлайна (мягкие цвета, красный в последние 10%).
Состояние on_hold: «Проверяем результат (до 3 мин). Награда сохранена».
3) Лидерборды на мобильном (без фликера)
Колонки: # место, игрок (аватар/рамка/ник), очки, призовая зона, таймер.
Sticky “Я” + кнопка «к себе». Jump to rank (поле ввода числа).
Обновления батчами раз в 1–2 сек, анимация перемещения 120–200 мс.
Пагинация: бесконечный скролл + «к началу/к себе».
В видимости — только дифф-строки (виртуализация, windowing).
4) Пуши и in-app уведомления (оркестрация без спама)
Правило: приоритет in-app карточек → пуш → email.
Окна: пересечение вероятного онлайна пользователя с расписанием ивента (модель «активность в ближайшие 90–120 мин»).
Частота: ≤ N/неделя, ≤ M/день; тихие часы; «умное молчание» после мьюта.
Пэйлоады: короткий текст + диплинк + превью награды.
Примеры: `push.payload`:json
{
"title": "Вечерний спринт, 20 минут", "body": "Старт через 15 мин. Редкая косметика в призовой зоне.", "deeplink": "app://event/ev.s5.sprint20?highlight=reward"
}
In-app карточка: «≈20–25 мин, 3 провайдера, редкий дроп 10%».
5) Оффлайн и слабая сеть
Кэш миссий/расписания на 24–48 ч; метка «Последняя синхронизация: 14:02».
Оффлайн-состояния: «Просмотреть правила» и «Планировать участие», без старта.
Кнопка «Повторить» для сетевых ошибок; ETag/If-None-Match для экономии.
6) Производительность и батарея
Виртуализация списков (300+ строк).
Lottie/спрайты, ограничение длительности VFX (0.6–1.2 с), без тяжёлых шейдеров.
Таймеры — единый тиковый шедулер, не по одному `setInterval` на элемент.
Фоновые обновления: BG App Refresh/WorkManager с капом частоты и размером ответа.
Telemetry: WebSocket/SSE → сжатие; backoff при фоне.
7) Безопасность, честность и анти-абьюз
Сервер решает RNG, клиент — только визуал.
Идемпотентность наград: одно событие → одно начисление (server-side).
Humanity-челленджи вместо капчи (микро-жесты), включаются по риску.
Ограничение «сменить миссию» (cooldown), вариативность требований (анти-фарм).
Онбординг «Как это работает»: шансы дропа, pity, капы, правила лиг.
8) RG-стражи на мобильном
Тумблеры «тихий режим», «приглушить чужие эффекты», напоминания о паузах.
При сигналах усталости — уменьшение сложности, предложение перерыва, запрет длинных форматов.
Быстрый opt-out от персонализации уведомлений и мини-игр.
9) Права и конфиденциальность
iOS ATT/Notifications: объяснить ценность, спросить разрешения после микро-онбординга.
Android 13+ runtime-разрешения на пуши; каналы уведомлений (low/normal/high).
Сбор данных — агрегаты; PII минимум; экраны с политикой и «Удалить данные».
10) Аналитика и метрики
Карточки миссий: CTR, Start Rate, Completion Rate, Median TTC, Equip Rate/Duration для косметики.
Турниры: Join Rate, доля «к себе», время видимости таблиц, P95 времени до награды.
Уведомления: Hit Rate окна (попали в активную сессию), Join Uplift, Mute/Unsub Rate.
Экономика: Emission to GGR, Prize ROI, Gini по SP.
Стабильность: кроши по сетевым ошибкам, длительность рендеров, ANR/Crash-free.
11) A/B-план
1. Прогресс-бар: числовой+визуальный vs только визуальный.
2. Оценка времени на карточке: включено/выключено.
3. Частота обновлений лидерборда: 1 с vs 2 с.
4. Пуш-время: T-30 vs T-15 мин.
5. Формат карточки: одна CTA vs две равные.
6. «К себе»: закрепленная строка vs кнопка.
12) Платформенные нюансы
iOS: BG App Refresh лимитирован; используйте пуши с `content-available` для тихих обновлений (бережно).
Android: WorkManager/Foreground Service только при явной активности; каналы уведомлений обязательны.
React Native/Flutter:- RN: FlatList с `getItemLayout`/`windowSize`, Reanimated 3 для дифф-анимаций.
- Flutter: `ListView.builder` + `AnimatedList`/`ImplicitlyAnimatedReorderableList`, изоляты для тяжёлой логики.
13) Контент-модель (JSON) и диплинки
Миссия
json
{
"id": "m.s5.play.providers.3", "title": "Откройте три провайдера", "summary": "Сыграйте у 3 разных провайдеров за 30 минут", "difficulty": "medium", "est_time_min": 25, "progress": {"current": 1, "target": 3}, "rewards": {"tokens": 12, "cosmetic_drop": {"rarity": "Rare", "p": 0.1}}, "expires_at": "2025-10-28T18:00:00Z", "state": "available", "deeplink": "app://mission/m.s5.play.providers.3?start=true"
}
Турнир
json
{
"event_id": "ev.s5.sprint20", "title": "Вечерний спринт 20 мин", "stage": "qualifier", "ends_at": "2025-10-24T21:00:00Z", "leaderboard": {"league": "Gold I", "my_rank": 128, "delta_to_next": 42}, "rewards_preview": [{"type": "cosmetic", "rarity": "Epic"}], "deeplink": "app://event/ev.s5.sprint20?tab=leaderboard"
}
URI-схема
app://event/{id}
app://mission/{id}
app://leaderboard/{id}?tab=my app://quests/today
14) Состояния, ошибки, скелетоны
Loading: скелетоны 3–5 строк/тайлов, shimmer ≤ 1.2 c.
Empty: полезный текст + «Получить стартовую миссию».
Error: простое сообщение + «Повторить»; офлайн — кэш и время последней синхронизации.
15) Релизный чеклист (MVP → v1.0)
MVP (2–4 недели):- Диплинки, базовые карточки миссий, лидерборд с батч-апдейтами 2 с.
- In-app карточки уведомлений, один пуш-канал, кэш расписания, экран «Как это работает».
- RG-тумблеры, анти-фарм (cooldown «Сменить миссию»).
- Личный «к себе», Jump to rank, мини-игра-разогрев (≤ 90 с) в квалификаторе.
- Тихие пуши для фонового обновления, reason-codes при on_hold.
- Телеметрия: Hit Rate окна, Join Uplift, Gini SP.
- Полная сезонная дорожка, ретро-камбэки косметики, локализация, доступность (контраст, VoiceOver/TalkBack метки).
- Логи аудита, апелляции, антибот-биометрия.
- A/B-движок (фичи-флаги), отчёты честности.
Мобильная интеграция турниров и квестов работает, когда навигация мгновенна (диплинки), UI читабелен «с одного взгляда», обновления плавные и экономные к батарее, а честность и RG-стражи встроены в каждое решение — от карточек миссий до пуш-оркестрации. Дайте игроку понятные цели, предсказуемые таймеры и тихий VFX, держите экономику промо под капами и измеряйте Hit Rate окна, Completion/Join Uplift и Gini по SP — тогда мобильная связка станет устойчивым двигателем вовлечённости без лишнего шума.