Turnirlar va kvestlarning mobil integratsiyasi
1) Arxitektura va joylashtirish nuqtalari
Navigatsiya: lobbi → «Turnirlar »/« Kvestlar» tablari; xederdan tezkor foydalanish (progress nishonchasi).
Diplinklar:’app ://event/{ id}’,’app ://mission/{ id}’,’app ://leaderboard/{ id}? tab = my’- in-app, moʻynalar va veb-vidjetlar uchun yagona router.
Tarkibni joylashtirish:- Native/React Native/Flutter - peshqadamlar, missiya kartochkalari va taymerlar uchun.
- WebView - faqat statik axborot/qoidalar uchun; tanqidiy real-time renderlash mumkin emas.
2) Missiya kartochkasi: mobil anatomiya
Sarlavha ≤ 2 satr, turdagi belgi, qisqacha tavsif (nima/qaerda/qancha vaqt).
Progress-bar + son (2/3), vaqtni baholash (20-25 daqiqa ≈), murakkablik (•).
Mukofotlar: «pul» subteksisiz mini-ikonalar bilan tokenlar/kosmetika.
CTA bitta: «Boshlash/Davom etish/Olib tashlash». Secondary: «Almashtirish» (cooldown), «Batafsil ma’lumot».
Muddatgacha taymer (yumshoq ranglar, oxirgi 10% da qizil).
on_hold holati: "Natijani tekshiramiz (3 daqiqagacha). Mukofot saqlanib qoldi".
3) Mobil liboslar (flikersiz)
Ustunlar: # joy, o’yinchi (avatar/ramka/nik), ochkolar, sovrin zonasi, taymer.
Sticky «Men» + «o’zimga» tugmasi. Jump to rank (sonni kiritish maydoni).
Har 1-2 soniyada batchlar bilan yangilanish, 120-200 ms ko’chish animatsiyasi.
Paginatsiya: cheksiz skroll + «boshlanish/o’ziga».
Ko’rinishda - faqat diff-satrlar (virtualizatsiya, windowing).
4) Mo’ynalar va in-app bildirishnomalar (spamsiz orkestrlash)
Qoida: kartochkalarning ustuvorligi → push → email.
Derazalar: foydalanuvchining ehtimoliy onlayn tarmog’ini ivent jadvali bilan kesib o’tish («yaqin 90-120 daqiqada faollik» modeli).
Chastota: ≤ N/hafta, ≤ M/kun; tinch soatlar; myutdan keyin «aqlli sukut saqlash».
Pailoadlar: qisqa matn + diplink + prevyu mukofotlari.
Misollar: `push. payload`:json
{
"title": "Kechki sprint, 20 daqiqa", "body": "15 daqiqadan so’ng boshlash. Sovrin zonasida noyob kosmetika. ", "deeplink": "app://event/ev. s5. sprint20? highlight=reward"
}
In-app kartochka: «≈ 20-25 daqiqa, 3 provayder, kamyob drop 10%».
5) Offlayn va zaif tarmoq
24-48 soatlik missiyalar/jadvallar keshi; «Oxirgi sinxronizatsiya: 14:02» belgisi.
Oflayn holatlar: «Qoidalarni ko’rish» va «Ishtirokni rejalashtirish», boshlamasdan.
Tarmoq xatolari uchun «Takrorlash» tugmasi; Tejash uchun ETag/If-None-Match.
6) Unumdorlik va batareya
Roʻyxatlarni virtuallashtirish (300 + satr).
Lottie/spraytlar, davomiyligi cheklangan VFX (0. 6–1. 2 s), og’ir sheyderlarsiz.
Taymerlar - bir elementga birdan’setInterval’bo’lmagan yagona tik shedullardir.
Orqa fon yangilanishlari: BG App Refresh/WorkManager.
Telemetry: WebSocket/SSE → siqish; orqa fonda backoff.
7) Xavfsizlik, halollik va zo’ravonlikka qarshi
Server RNG ni hal qiladi, mijoz faqat vizual.
Mukofotlarning idempotentligi: bitta hodisa → bitta hisoblash (server-side).
Kapcha (mikro-imo-ishoralar) o’rniga humanity-challenglar tavakkalchilik bo’yicha kiritiladi.
«Vazifani o’zgartirish» cheklovi (cooldown), talablarning o’zgaruvchanligi (anti-farm).
«Bu qanday ishlaydi» onbording: drop, pity, kapa imkoniyatlari, liga qoidalari.
8) Mobil telefonda RG-qo’riqchilar
Tumblerlar «jim rejim», «boshqalarning ta’sirini yumshatish», pauzalarni eslatish.
Charchoq signallarida - murakkablikni kamaytirish, tanaffus taklif qilish, uzoq formatlarni taqiqlash.
Xabarnomalar va mini-o’yinlarni personallashtirishdan tezkor opt-out.
9) Huquqlar va maxfiylik
iOS ATT/Notifications: qiymatini tushuntirish, mikro-onbordingdan so’rash.
Android 13 + runtime-ruxsatnomalar; xabarnoma kanallari (low/normal/high).
Ma’lumotlarni yig’ish - agregatlar; PII minimal; siyosat ekranlari va «Ma’lumotlarni o’chirish».
10) Tahlil va metrika
Missiya kartochkalari: CTR, Start Rate, Completion Rate, Median TTC, Equip Rate/Duration kosmetika uchun.
Turnirlar: Join Rate, o’z ulushi, jadvallarning ko’rinish vaqti, mukofotgacha bo’lgan vaqt P95.
Ogohlantirishlar: Hit Rate oynalari (aktiv sessiyada), Join Uplift, Mute/Unsub Rate.
Iqtisodiyot: Emission to GGR, Prize ROI, Gini po SP.
Barqarorlik: tarmoq xatolari bo’yicha qisqichbaqalar, renderlarning davomiyligi, ANR/Crash-free.
11) A/B-reja
1. Progress bar: raqamli + vizual vs faqat vizual.
2. Kartadagi vaqtni baholash: yoqilgan/o’chirilgan.
3. Peshqadamni yangilash chastotasi: 1 s vs 2 s
4. Push-time: T-30 vs T-15 min.
5. Kartochka formati: bitta CTA vs ikkita teng.
6. «O’ziga»: biriktirilgan satr vs tugmasi.
12) Platforma nuanslari
iOS: BG App Refresh cheklangan; jimgina yangilanish uchun’content-available’dan foydalaning (ehtiyotkorlik bilan).
Android: WorkManager/Foreground Service faqat aniq faollikda; xabarnoma kanallari majburiy hisoblanadi.
React Native/Flutter:- RN: FlatList’getItemLayout ’/’ windowSize’, diff-animatsiyalar uchun Reanimated 3.
- Flutter: `ListView. builder’+’AnimatedList ’/’ ImplicitlyAnimatedReorderableList’, ogʻir mantiq uchun izolyatsiya qilingan.
13) Kontent modeli (JSON) va diplinklar
Missiya
json
{
"id": "m. s5. play. providers. 3 «,» title «:» Uchta provayderni oching «,» summary «:» Uch xil provayderdan 30 daqiqada o’ynang «,» 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"
}
Turnir
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 sxemasi
app://event/{id}
app://mission/{id}
app://leaderboard/{id}?tab=my app://quests/today
14) Holatlar, xatolar, skeletonlar
Loading: 3-5 satr/tayl skeletonlari, shimmer ≤ 1. 2 c.
Empty: foydali matn + «Boshlang’ich missiyani olish».
Error: oddiy xabar + Takrorlash; oflayn - kesh va oxirgi sinxronlash vaqti.
15) Reliz cheklisti (MVP → v1. 0)
MVP (2-4 hafta):- Diplinklar, missiyalarning bazaviy kartochkalari, batch-apdeytli liderbord 2 s.
- In-app xabarnoma kartochkalari, bitta push-kanal, jadval keshi, «Bu qanday ishlaydi» ekrani.
- RG-tumblerlar, anti-farm (cooldown «Missiyani o’zgartirish»).
- Shaxsiy «o’ziga», Jump to rank, malaka darajasida mini-isitish o’yini (90 s ≤).
- Orqa fon yangilanishi uchun jim qurollar, on_hold paytida reason-codes.
- Telemetriya: Hit Rate oyna, Join Uplift, Gini SP.
- To’liq mavsumiy yo’l, kosmetika retro-kambeklari, mahalliylashtirish, foydalanish imkoniyati (kontrast, VoiceOver/TalkBack belgilari).
- Audit loglari, apellyatsiyalar, antibot-biometriya.
- A/B-dvigatel (fich-bayroqlar), halollik hisobotlari.
Turnirlar va kvestlarning mobil integratsiyasi navigatsiya bir lahzali bo’lganda, UI «bir qarashda» o’qish mumkin bo’lganda, yangilanishlar batareyaga silliq va tejamkor bo’lganda, halollik va RG-qo’riqchilar esa har bir yechimga missiya kartochkalaridan tortib push-orkestrgacha o’rnatilganda ishlaydi. O’yinchiga aniq maqsadlar, oldindan aytib bo’ladigan taymerlar va sokin VFX bering, iqtisodiyotni promo-kaplar ostida ushlab turing va Hit Rate derazalarini, Completion/Join Uplift va Gini SP orqali o’lchang - mobil aloqa ortiqcha shovqinsiz barqaror jalb qilish dvigateliga aylanadi.