邮箱不是一个消息列表
游戏邮箱常被当成普通列表:标题、发件人、时间、正文、附件、领取按钮。真正上线后,它会承担补偿、活动奖励、拍卖结果、系统通知、客服回复、道具返还和跨服结算。玩家对邮箱的信任很高,因为很多重要资产都从这里进背包。客户端如果把邮箱做得像简单公告,很容易在附件、红点、过期和弱网场景里出问题。
我更愿意把邮箱分成三层:邮件列表层、邮件详情层、附件事务层。列表负责快速浏览和红点,详情负责解释内容,附件事务负责领奖和对账。不要让列表行直接处理附件领取,也不要让详情弹窗自己更新背包。
flowchart TD
A[邮件摘要列表] --> B[列表缓存与分页]
B --> C[邮件详情]
C --> D{是否有附件?}
D -->|无| E[标记已读]
D -->|有| F[附件领取事务]
F --> G[服务端确认]
G --> H[背包增量]
H --> I[奖励展示队列]
G --> J[邮件状态刷新]
J --> B
摘要和详情要分开加载
邮箱列表通常只需要摘要:邮件 ID、标题、发件人、时间、是否已读、是否有附件、附件是否已领、过期时间。正文和附件明细可以等玩家打开详情再拉。这样列表打开更快,也避免一次性加载大量历史邮件。
分页要稳定。玩家删除或领取邮件后,列表不能突然跳到顶部。可以按服务端游标分页,客户端维护当前页附近缓存。单封邮件状态变化时局部更新摘要;只有批量删除、跨天清理或版本差异过大时才刷新整页。
邮件 ID 是所有操作的锚点,不能用列表索引。玩家点第 3 封邮件时,后台推送新邮件插到顶部,索引会变化。详情页和领取事务都必须绑定邮件 ID 和附件版本。
已读和已领是两回事
很多系统把打开邮件就标记已读,把领取附件也顺便标记已读。体验上看似简单,但红点会变得难解释。玩家可能已经读过邮件但没领附件,也可能批量领取了附件但没看正文。客户端应该把已读、附件待领、附件已领、过期分别建模。
主入口红点最好只由“未读重要邮件”或“待领取附件”触发。普通已读通知不应长期占红点。邮件列表里可以用小点区分未读,用附件角标区分待领。玩家一眼能看懂为什么邮箱有提示。
附件领取成功后,邮件可以保留为已领状态,也可以按配置自动删除。自动删除要谨慎,玩家可能还想看补偿说明。更稳的做法是领取后保留一段时间,或者只在批量清理时删除已领过期邮件。
一键领取要有边界
一键领取很受欢迎,但也最容易出错。它应该只领取当前可领且未过期的附件,不应自动删除正文,不应领取需要二次确认的高风险附件,比如账号绑定返还、拍卖失败返还、限时选择箱。客户端需要在请求前生成候选列表,并在请求后展示成功和失败汇总。
服务端可能返回部分成功:有些邮件过期、有些背包满、有些已经被另一个设备领取。客户端不能简单弹“领取失败”。应该更新每封邮件状态,并给玩家一个摘要:成功领取多少封,几封因背包空间不足保留,几封已过期。
批量奖励展示要合并。几十封邮件的金币和材料可以合并成一个奖励弹窗,特殊道具单独突出。展示队列要带来源“邮箱一键领取”,方便日志和客服对账。
过期时间要清楚
邮件过期是玩家最敏感的体验之一。列表里应显示即将过期标记,详情里说明到期时间和附件处理规则。倒计时使用服务器时间估算,不用手机本地时间直接判断。
过期清理要以服务端为准。客户端看到倒计时到零后,可以把邮件标为待刷新,调用刷新接口确认。不要在本地直接删除邮件,否则时间误差会导致玩家误以为附件被客户端吞掉。
如果邮件已经过期但服务端仍返回摘要,客户端应显示过期状态并禁用领取。过期附件是否可补发,是客服和服务端规则,不应该由客户端猜。
邮件内容也需要安全处理
系统邮件正文可能包含链接、道具名称、活动时间、玩家昵称。客户端要支持基础富文本,但不要允许任意 HTML 或脚本。链接跳转必须走白名单导航,不能让邮件内容直接打开任意页面。
敏感信息也要考虑。客服邮件可能包含账号相关说明,截图分享时是否展示需要产品决策。开发调试字段不能出现在正式邮件正文里。邮件系统是运营常用通道,内容安全不能只靠运营自觉。
弱网恢复要可解释
玩家点领取后断线,邮件状态最容易混乱。事务层应记录请求中的邮件 ID 和请求 ID。重连后重新拉邮件摘要,如果服务端显示已领,就更新本地并提示“附件已到账”;如果仍可领,就恢复按钮;如果邮件不存在,提示邮件已处理或过期。
不要在弱网时重复发送多次领取请求,除非服务端明确支持幂等。重复请求虽然理论上不应多发奖励,但会制造多条失败日志和糟糕提示。
小结
邮箱系统的核心是信任。客户端把摘要分页、详情加载、已读已领状态、附件事务、一键领取和过期清理拆清楚,玩家就能放心把它当作资产入口。一个稳定邮箱,往往比华丽界面更能减少客服压力。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
邮箱调试面板里可以显示邮件列表版本、当前分页游标、入口红点来源、最近领取事务 ID 和失败原因。这个信息不会展示给玩家,却能让测试和客服快速判断问题发生在列表、详情还是附件事务。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。