移动锦标赛和任务集成
1)体系结构和嵌入点
导航:大厅→锦标赛/任务标签;从头部快速访问(进步徽章图标)。
Diplinks: 'app: //event/{id}",'app: //mission/{id}",'app: //leaderboard/{id} tab=my'是用于应用程序、枪支和Web小部件的单个路由器。
嵌入内容:- 本地/React 本地/Flutter用于领导板,任务卡和计时器。
- WebView-仅用于静态信息/规则;无法渲染关键的实时时间。
2)任务卡: 移动解剖学
标题≤ 2行,类型图标,简要说明(哪里/多少)。
Progress-bar+数字(2/3),时间估计(≈ 20-25分钟),复杂性(•。
奖项:迷你图标令牌/化妆品,没有"金钱"潜台词。
CTA one:"开始/继续/接送"。中学:"Change"(cooldown),"Detail"。
截止日期计时器(柔和的颜色,最后10%为红色)。
on_hold状态: "我们检查结果(最多3分钟)。该奖项被保留。"
3)移动上的领导板(无鞭子)
专栏:#地点,玩家(化身/框架/尼克),积分,奖品区,计时器。
Sticky "I"+按钮到自己。跳到排名(数字输入字段)。
每秒1-2秒更新一次蹦床,动画移动120-200毫秒。
分裂:无限滚动+"到开始/到自己"。
在可见性中,只有diff行(虚拟化、视窗)。
4)Pushi和In-App通知(无垃圾邮件编排)
规则:应用卡优先级→ push →电子邮件。
窗口:可能在线用户与活动时间表的交集("未来90-120分钟的活动"模型)。
频率:≤ N/周,≤ M/天;安静的时钟;Mute之后的"聪明的沉默"。
Payloads:短文+diplink+奖项预览。
示例:- `push.payload`:
json
{
"标题":"晚间冲刺,20分钟","身体":"15分钟开始。奖品区稀有化妆品。",    "deeplink": "app://event/ev.s5.sprint20?highlight=reward"
}应用卡: "≈20 -25分钟,3个供应商,罕见的10%下降。"
5)离线和薄弱的网络
24至48小时任务/时间表缓存;最后同步:14:02标签。
离线状态:"查看规则"和"计划参与",无需启动。
网络错误的"重复"按钮;ETag/If-None-Match可节省成本。
6)性能和电池
列表虚拟化(300多行)。
Lottie/精灵, VFX持续时间限制(0.6–1.2 c),没有沉重的着色器。
计时器-单个tick sheduler,每个元素不一个"setInterval"。
背景更新:BG App Refresh/WorkManager带有频率卡和响应大小。
Telemetry:WebSocket/SSE →压缩;背景下的背景。
7)安全,诚实和反欺凌行为
服务器决定RNG,客户端-仅可视化。
奖励水平:一个事件→一个计费(服务器侧)。
人性化挑战而不是kapchi(微型手势),按风险计算。
限制"更改任务"(cooldown),需求变异(反农场)。
Onbording"它如何工作":运球赔率,pity,kaps,联赛规则。
8)手机上的RG监护人
Tumblers"安静模式","静音别人的影响",提醒停顿。
对于疲劳信号-减少复杂性,提供休息,禁止长格式。
快速从个性化通知和迷你游戏中脱颖而出。
9)权利和机密
iOS ATT/Notifications:解释价值,在微板后请求解决。
Android 13+枪支运行时分辨率;通知渠道(low/normal/high)。
数据收集-聚合;PII最低;具有策略和"删除数据"的屏幕。
10)分析和指标
任务卡:CTR,开始率,完成率,Median TTC,化妆品均衡率/持续时间。
比赛:加分,分数"靠自己",表格可见时间,P95获奖时间。
通知:窗口命中率(已进入活动阶段),Join Uplift,Mute/Unsub Rate。
经济学:Emission to GGR,Prize ROI,Gini by SP。
稳定性:通过网络错误微小,渲染持续时间,ANR/无碰撞。
11) A/B计划
1.进步吧:数字+视觉vs仅视觉。
2.卡上的时间估计:已打开/关闭。
3.Leadboard更新的频率:1与vs 2 s。
4.Push时间:T-30 vs T-15分钟。
5.卡片格式:一个CTA vs两个相等。
6."到自己":固定字符串vs按钮。
12)平台细微差别
iOS: BG App Refresh有限;使用带有"内容可用性"的机枪进行安静更新(小心)。
Android:仅在显式活动时才使用WorkManager/Foreground Service;通知渠道是强制性的。
React Native/Flutter:
RN:带有"getItemLayout"/"windowSize"的FlatList,用于diff动画的Reanimated 3。
Flutter: `ListView.构建器"+"AnimatedList"/"ImplicitlyAnimatedReorderableList",为重逻辑隔离。
13)内容模型(JSON)和双凸轮
四.任务
json
{
"id": "m.s5.play.providers.3","标题:"打开三个提供商","总结":"在30分钟内与3个不同的提供商一起玩","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/today14)状态,错误,骨架
加载: 骨架为3-5行/标题,shimmer ≤ 1。2 c.
Empty:有用的文本+"获取启动任务"。
错误:简单消息+"重复";离线-缓存和上次同步时间。
15)发行支票单(MVP → v1。0)
MVP(2-4周):- Diplinki,基本任务卡,带有butch updates 2 s的领导板。
- 应用内通知卡,单个push通道,时间表缓存,"工作原理"屏幕。
- RG-tumblers,反农场(cooldown "Change Mission")。
v0.9:
个人"靠自己",跳到排名,迷你热身赛(≤ 90 s)在预选赛中。
安静的大麻进行背景更新,on_hold时重新编码。
遥测:命中率窗口,Join Uplift,Gini SP。
v1.0:
完整的季节性轨道,复古复古化妆品,定位,可用性(对比,VoiceOver/TalkBack标签)。
审计记录,上诉,反机器人生物识别。
A/B引擎(字旗),诚实报告。
当即时导航(diplinks),UI"一目了然"chitabelen,更新流畅且对电池经济且诚实和RG守护者嵌入到每个解决方案中时,便可以进行移动比赛和任务集成-从任务卡到推杆编排。让玩家理解目标、可预测的计时器和安静的VFX,将促销经济性保持在引擎盖下方,并通过SP测量命中率窗口、Completion/Join Uplift和Gini--然后移动捆绑将成为一个稳定的参与引擎,没有额外的噪音。
