Integración móvil de torneos y misiones
1) Arquitectura y puntos de incrustación
Navegación: lobby → pestaña «Torneos »/« Misiones»; acceso rápido desde el header (icono con la etiqueta de progreso).
Diplins: 'app ://event/{ id}', 'app ://mission/{ id}', 'app ://leaderboard/{ id}? amb = my' es un único router para in-app, cañones y widgets web.
Incrustación de contenido:- Native/Nat Native/Flutter para equipos de liderazgo, tarjetas de misión y temporizadores.
- WebView: sólo para info/reglas estáticas; no se puede renderizar el tiempo real crítico.
2) Tarjeta de misión: anatomía móvil
Título ≤ 2 líneas, icono de tipo, breve descripción (qué/dónde/cuánto tiempo).
Barra de progreso + número (2/3), estimación de tiempo (≈ 20-25 min), dificultad (•).
Recompensas: tokens/cosméticos con mini iconos, sin connotaciones «monetarias».
CTA uno: «Empezar/Continuar/Recoger». Segundo: «Cambiar» (cooldown), «Leer más».
Temporizador hasta la línea de salida (colores suaves, rojo en el último 10%).
Estado de on_hold: "Verificamos el resultado (hasta 3 min). La recompensa se ha conservado".
3) Tablas de liderazgo en el móvil (sin flicker)
Columnas: # lugar, jugador (avatar/marco/nick), puntos, zona de premios, temporizador.
Sticky «I» + botón «hacia mí mismo». Jump to rank (campo de entrada de número).
Actualizaciones de batch una vez cada 1-2 segundos, animación de mover 120-200 ms.
Paginación: skroll infinito + «hacia el principio/hacia sí mismo».
En visibilidad, sólo las cadenas diff (virtualización, windowing).
4) Pushi y notificaciones en la aplicación (orquestación sin spam)
Regla: la prioridad de las tarjetas en la aplicación → push → email.
Ventanas: intersección de un probable usuario en línea con un programa de eventos (modelo de «actividad en los próximos 90-120 minutos»).
Frecuencia: ≤ N/semana, ≤ M/día; horas tranquilas; «silencio inteligente» después de la muerte.
Paloadas: texto corto + diplink + vista previa del premio.
Ejemplos: `push. payload`:json
{
"título": "Sprint vespertino, 20 minutos", "body": "Inicio en 15 minutos. Cosméticos raros en la zona de premios. ", "deeplink": "app://event/ev. s5. sprint20? highlight=reward"
}
Tarjeta en la aplicación: «≈20 -25 min, 3 proveedores, drop raro 10%».
5) Fuera de línea y red débil
Caché de misiones/horarios de 24 a 48 horas; etiqueta «Última sincronización: 14:02».
Estados offline: «Ver reglas» y «Planificar participación», sin inicio.
Botón Repetir para errores de red; ETag/If-None-Match para ahorrar dinero.
6) Rendimiento y batería
Virtualización de listas (más de 300 líneas).
Lottie/sprites, límite de duración VFX (0. 6–1. 2 c), sin shaders pesados.
Los temporizadores son un solo scheduler de teca, no uno 'setInterval' por elemento.
Actualizaciones de fondo: BG App Refresh/WorkManager con una gota de frecuencia y tamaño de respuesta.
Telemetría: WebSocket/SSE → compresión; backoff en el fondo.
7) Seguridad, honestidad y anti-abusividad
El servidor resuelve RNG, el cliente es sólo visual.
Idempotencia de recompensas: un evento → una acumulación (server-side).
Challenge humanity en lugar de capchi (micro-gestos), se encienden por riesgo.
Limitación de «cambiar de misión» (cooldown), variabilidad de requisitos (anti-pharm).
Onboarding «Cómo funciona»: chances de drop, pity, caps, reglas de ligas.
8) RG-guardianes en el móvil
Tumblers «modo silencioso», «silenciar los efectos de otras personas», recordatorios de pausas.
Con las señales de cansancio - reducir la dificultad, ofrecer una pausa, prohibir los formatos largos.
Rápido opt-out de la personalización de notificaciones y minijuegos.
9) Derechos y confidencialidad
iOS ATT/Notificaciones: explicar el valor, pedir permiso después del micro-on-boarding.
Android 13 + runtime-permisos en los cañones; canales de notificación (bajo/normal/alto).
Recopilación de datos - agregados; PII mínimo; pantallas con política y «Eliminar datos».
10) Análisis y métricas
Tarjetas de misión: CTR, Start Rate, Completion Rate, Median TTC, Equip Rate/Duration para cosméticos.
Torneos: Tasa Join, cuota «a sí mismo», tiempo de visibilidad de las tablas, P95 tiempo hasta la recompensa.
Notificaciones: Hit Rate (accedió a la sesión activa), Join Uplift, Mute/Unsub Rate.
Economía: Emisión a GRG, Premio ROI, Gini por SP.
Estabilidad: migas por errores de red, duración de los renders, ANR/Crash-free.
11) A/B-plan
1. Barra de progreso: numérico + visual vs sólo visual.
2. Estimación de tiempo en la tarjeta: activada/desactivada.
3. Frecuencia de actualización del tablero de liderazgo: 1 con vs 2 con.
4. Push-time: T-30 vs T-15 min.
5. Formato de tarjeta: una CTA vs dos iguales.
6. «A sí mismo»: botón de línea vs anclado.
12) Matices de plataforma
iOS: BG App Refresh limitado; use los cañones con 'content-available' para actualizaciones tranquilas (cuidadosamente).
Android: WorkManager/Foreground Service sólo con actividad explícita; los canales de notificación son obligatorios.
React Native/Flutter:- RN: FlatList con 'getItemLayout '/' windowSize', Animado 3 para animaciones diff.
- Flutter: `ListView. builder '+' AnimatedList '/' ImplicitlyAnimatedReorderableList ', están aislados para la lógica pesada.
13) Modelo de contenido (JSON) y diplomas
Misión
json
{
"id": "m. s5. play. providers. 3 «,» título «:» Abrir tres proveedores «,» resumen «:» Jugar en 3 proveedores diferentes en 30 minutos «,» 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"
}
Torneo
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"
}
Esquema URI
app://event/{id}
app://mission/{id}
app://leaderboard/{id}?tab=my app://quests/today
14) Estados, errores, esqueletos
Carga: esqueletos de 3-5 líneas/tailes, shimmer ≤ 1. 2 c.
Empty: texto útil + «Obtener una misión inicial».
Error: mensaje simple + «Repetir»; fuera de línea - caché y hora de la última sincronización.
15) Checklist release (MVP → v1. 0)
MVP (2-4 semanas):- Diplomas, Cartas Base de Misión, Tablero de Liderazgo con Apdates de Batch 2 s.
- Tarjetas de notificación en la aplicación, un canal push, caché de programación, pantalla «Cómo funciona».
- RG-tumblers, anti-pharm (cooldown «Cambiar misión»).
- Personal «a sí mismo», Jump to rank, mini juego de calentamiento (≤ 90 s) en la calificación.
- Pistolas silenciosas para la actualización de fondo, reason-codes cuando se on_hold.
- Telemetría: Hit Rate Windows, Join Uplift, Gini SP.
- Pista de temporada completa, cosméticos retro, localización, disponibilidad (contraste, etiquetas VoiceOver/TalkBack).
- Registros de auditoría, apelaciones, antibiometría.
- Motor A/B (banderas de fichas), informes de honestidad.
La integración móvil de torneos y misiones funciona cuando la navegación es instantánea (Diplinki), la IU es chitabelina «de un vistazo», las actualizaciones son suaves y económicas para la batería, y la honestidad y los guardianes RG se incorporan en cada solución, desde tarjetas de misión hasta orquestación push. Dale al jugador objetivos claros, temporizadores predecibles y un VFX silencioso, mantén la economía promo debajo de las gotas y mide las ventanas Hit Rate, Completion/Join Uplift y Gini por SP - entonces el ligamento móvil se convertirá en un motor de participación sostenible sin demasiado ruido.