| 项目 | 内容 |
|---|---|
| 文档版本 | v1.1(2026-09-15 更新:产品已就 5 项决策拍板,详见第十一章) |
| 功能模块 | 我的 → 设备 |
| 适用端 | iOS / Android(移动端);涉及其它端的登录行为在第六章 6.8 与第八章中约定 |
| 设计稿 | Figma「U8 Chat 2.0」6dsI4eKdAoZr4RP0uILIBq · 画布「设备管理」node 515-989 |
| 线框图与演示 | 同目录 index.html(20 屏可点击串联) |
| 查缺补漏报告 | 历史归档 _archive/01_查缺补漏-页面清单与比对.md |
| 参照产品 | Telegram「Settings → Devices / Active Sessions」 |
本 PRD 的特点:设计稿已交付 9 屏主干。按 Telegram 逐条筛过后,真正缺的「页面」只有 1 个
(扫码确认授权页),其余补充是已有页面的状态 6 屏、设计稿回改 1 屏、其它模块 3 屏,全案共 20 屏。
「非 Telegram 固有且可合并」的一律已合并;编辑态只支持逐个删、不做批量(决策 D5)。删除会话有「逐个删」与「除本机外全删」两类路径。产品决策见 第十一章。
U8 Chat 支持同一个账号在多个端同时在线(iOS、Android、Web、桌面端)。这带来两个必须解决的问题:
同时,U8 Chat 与 U8 加密钱包共用账号。设备即资产入口——一台陌生设备在线,等于资产查看权限暴露。因此设备管理的安全等级要求高于普通 IM。
| # | 问题 | 影响 |
|---|---|---|
| 1 | 支持多端在线,但设备管理只在设置里有一行入口,且「添加设备」链路两端断裂 | 扫码登录走不通,用户只能靠密码在别的端登录 |
| 2 | 注销会话后没有任何反馈 | 用户不知道成没成,会重复操作,甚至误以为已生效(安全误判) |
| 3 | 编辑态(批量注销)只画了半个界面,且与「全删」重复 | 会让人不知道批量该走哪个入口(已决策:不补齐编辑态,由「除本机外全删」承接,见 6.5) |
| 4 | 扫码登录无手机端确认 | 扫到别人发的二维码 = 账号直接被登走(Telegram 最典型的诈骗手法) |
| 5 | 没有新设备登录提醒 | 账号被盗后用户可能几周都不会发现 |
业务目标
用户目标
成功指标(上线首月)
| 指标 | 目标 |
|---|---|
| 设备管理页周访问 UV / 活跃用户 | ≥ 15% |
| 「注销所有其它设备」操作成功率 | ≥ 98% |
| 扫码登录成功率(进入扫码页 → 电脑端登录成功) | ≥ 85% |
| 从「设备列表」到「注销完成」的平均步数 | ≤ 3 步 |
| 因"陌生设备"产生的安全类客诉 | 环比下降 50% |
| 不做的事 | 原因 |
|---|---|
| 扫码授权前的资金密码 / Face ID 二次验证 | 已决策本期不做(见 D2) |
| 「新设备 24 小时内不能注销其它会话」的安全规则 | 已决策本期不引入(见 D3) |
| 手机端的「添加设备-引导说明页」 | 已决策不做(见 D6);点「添加设备」直接进相机,引导由电脑端二维码页承担 |
| 编辑态的批量能力(勾选 / 全选 / 注销所选) | 不做:编辑态保留,但只支持一台一台删(见 D5 / 6.5)。批量删与「注销所有其它设备上的会话」重复 |
| 登录两步验证(2FA) | 本期不做 —— 影响见 6.9.1:没有 2FA 时,验证码是登录的必经步骤 |
| 深色模式、大字号无障碍适配 | 随全局一起排期 |
| 名词 | 定义 |
|---|---|
| 此设备 | 用户当前正在操作的这台设备。不能被自己注销。 |
| 活跃会话 | 除「此设备」外,其它在线的登录会话(含 Web / 桌面端)。 |
| 注销会话 | 结束某一台设备上的登录状态。该设备立即掉线,需重新登录。 |
| 注销所有其它设备上的会话 | 除「此设备」外,一次性结束全部会话。 |
| 自动终止旧会话 | 设置一个时长,超过该时长未上线的设备自动退出登录。 |
| 设备登录二维码 | 由电脑端(网页版 / 桌面端) 在登录页展示、仅供手机端扫描授权登录的二维码。有效期 5 分钟。 |
| 扫码登录(链接设备) | 手机端扫描电脑屏幕上的二维码,经手机端确认后,电脑端获得一个独立会话。 |
| 会话 ID | 每一次登录的唯一标识。同一台设备重复登录会产生新会话。 |
只有一个用户角色:账号持有者本人(无管理员、无子账号)。
用户换过几台设备,想确认一下现在还有哪些端在线。
路径:我的 → 设备 → 看到 3 台活跃会话,其中一台是半年前的公司电脑 → 点进详情 → 注销会话 → Toast「已注销」。
用户收到「新设备登录」通知(6.9.1),设备名和位置都不是自己的。
路径:通知 → 前往设备管理 → 看到陌生设备 → 点「注销所有其它设备上的会话」→ 确认 → Toast 成功。
要求:从收到通知到踢掉设备,不超过 30 秒、不超过 3 步。
路径:新手机上登录 → 我的 → 设备 → 点「注销所有其它设备上的会话」→ 确认(一步清掉所有旧设备)。
路径:在电脑端打开 U8Chat(网页版 / 桌面端)→ 按页面引导切到二维码登录 → 手机:我的 → 设备 → 添加设备 → 扫码 → 确认登录 → 电脑端登入成功,手机端列表新增该设备 + Toast。
用户在网吧/酒店电脑上用了网页版,离开前在手机上把它踢掉。
依赖:场景 A + 「最后活跃时间」字段足够准确。
| 模块 | 功能点 | 页面(线框图) | 优先级 |
|---|---|---|---|
| A 入口 | 「我的」页设备入口 | — | P0 |
| B 列表 | 设备列表页(此设备 / 活跃会话) | #E1 | P0 |
| B 列表 | 加载中 / 空态 / 加载失败 | —(不出独立屏,规则见 6.2 异常与边界) | 状态 |
| C 详情 | 会话详情面板(含字段补全) | #E7 #E8 #N16 | P0 |
| D 注销 | 单会话注销 + 确认 | #E9 | P0 |
| D 注销 | 列表左滑注销单台(原编辑态里的左滑,保留并独立) | #E4 | 已有 · 需回改 |
| D 注销 | 注销所有其它设备 + 确认 | #E2 | P0 |
| D 注销 | 成功 / 失败反馈 | #N08 #N09 | 状态 |
| E 设置 | 自动终止旧会话(含设置后回填) | #E6 | 已有 |
| F 扫码 | 扫码 → 确认授权 → 结果 | #E5 #N02 #N04 | 新增页面 + 状态 |
| F 扫码 | 失败态 / 权限态 | #N05 #N06 | 状态 |
| G 安全 | 新设备登录通知 | #N17 | 其它模块(聊天) |
| G 安全 | 被注销设备端表现(跨端) | #N15 | 其它模块(登录) |
| 项 | 说明 |
|---|---|
| 位置 | 「我的」页 → 列表第 7 行「设备」(Figma 573:23903 已有此行) |
| 右侧 | 默认无内容;有异常时显示红点(异常定义见下) |
| 异常定义 | ① 存在"最后活跃时间在 30 天内"但用户从未在自己的设备列表里见过的新会话 → 红点提示「有新的登录设备」 |
| 点击 | 进入设备列表页 #E1 |
待确认 Q1:红点规则是否要做?做的话需要"用户见过"的本地标记,属于客户端存储。
页面结构(自上而下)
‹ 返回 · 标题「设备」 · 右侧无操作(原「编辑」入口已决策删除,见 6.5)字段与数据来源
| 字段 | 来源 | 规则 |
|---|---|---|
| 设备名 | 系统上报 | 如 iPhone 17 Pro、MacBook Air M1、Chrome 152(网页版用浏览器名) |
| 应用与版本 | 客户端上报 | 格式 U8Chat <平台> <版本>,如 U8Chat iOS 12.8.1;带渠道时拼接渠道,如 U8Chat macOS 12.6 APP_STORE |
| 位置 | IP 估算 | 格式 城市,国家(英文,与设计稿一致);必须同时展示免责说明 |
| 在线状态 | 服务端 | 此设备固定显示「在线」(蓝色);活跃会话显示最后活跃时间 |
| 最后活跃时间 | 服务端 | 规则见 7.1 |
排序规则
数量与滚动
交互
| 操作 | 结果 |
|---|---|
| 点「此设备」卡片 | 打开此设备详情面板 #E7 |
| 点「注销所有其它设备上的会话」 | 弹出确认弹窗 #E2 |
| 点某台活跃会话 | 打开会话详情面板 #E8 / #N16 |
| 左滑某台活跃会话 | 露出红色「注销」按钮 → 点击后进确认弹窗 #E9(快捷路径,与详情页按钮等价) |
| 点右上角「编辑」 | 进编辑态 #E3:其它设备每行出现红色减号 → 点减号进确认弹窗 #E9(只支持逐个删,见 6.5) |
| 点「添加设备」 | 直接进入扫码页 #E5 |
| 下拉刷新 | 重新拉取列表 |
异常与边界
| 情况 | 处理 |
|---|---|
| 只有此设备 | 照常显示「此设备」卡片(本机永远在,列表不会全空);「活跃会话」区显示一行「暂无其它活跃会话 / 你只在这台手机上登录着 U8Chat」;「注销所有其它设备」行隐藏。不单独出空态页 |
| 列表加载中 | 不做骨架屏(已决策):正常等待数据返回 |
| 加载失败 | 在设备列表页之上弹一个提示框「网络连接已中断」,不带按钮;失败时不展示任何缓存数据,避免用户基于旧数据做注销决策 |
| 扫码添加设备中 | 该设备以「等待确认」状态临时插入列表(可选,见 Q2) |
埋点:页面曝光、拉取成功/失败、点击「添加设备」/某会话/注销所有其它设备、左滑注销。
触发:点击列表中的任一设备(含此设备)。
结构(自下而上的 Sheet)
✕必改项
不做的(避免过度设计)
| 步骤 | 说明 |
|---|---|
| 1 | 用户点击详情面板底部「注销会话」 |
| 2 | 弹出确认弹窗。标题「提示」,正文 「注销 MacBook Air M1 的会话?」(必须点名设备) |
| 3 | 附一句后果:「该设备将立即退出登录,需要重新登录才能使用。」 |
| 4 | 按钮:注销会话(红色,主)/ 取消 |
| 5 | 成功 → 关闭面板、该设备从列表移除、Toast「已注销 MacBook Air M1 的会话」#N08 |
| 6 | 失败 → 保持原样 + 红色 Toast「注销失败,请检查网络后重试」#N09,可在面板底部重试 |
| 7 | 若列表中已无其它设备 → 只在「活跃会话」区显示一行「暂无其它活跃会话」,不出独立空态屏 |
被注销端:见第八章 / #N15。
入口与形态
| 项 | 说明 |
|---|---|
| 入口 | 主页 #E1 右上角「编辑」;「活跃会话」为空时该入口隐藏 |
| 形态 | 进入后,其它设备(活跃会话)每行左侧出现红色减号(待删除态);「此设备」卡片不带减号 |
| 点红色减号 | 进确认弹窗 #E9(与左滑注销等价),确认后该台从列表移除 |
| 退出 | 右上角「完成」(✓)回列表 |
| 不做 | 「已选 N 项」计数、全选、底部批量提交按钮 —— 只支持一台一台删 |
设计意图
进入编辑态只为露出删除控件(每行红色减号),不做多选批量 —— 批量删与 6.6 的「注销所有其它设备上的会话」重复,且要多两步(编辑 → 全选 → 提交)。
删除会话的全部路径
| # | 路径 | 入口 | 覆盖场景 |
|---|---|---|---|
| ① | 左滑 | 列表页某台会话左滑 #E4 → 确认 #E9 | 只怀疑其中一台 |
| ② | 详情页按钮 | 进 #E8 → 底部「注销会话」→ 确认 #E9 | 想先看详情再决定 |
| ③ | 编辑态减号 | 主页「编辑」→ #E3 → 点某台的红色减号 → 确认 #E9 | 想在一屏里逐台清理 |
| ④ | 除本机外全删 | 主页「注销所有其它设备上的会话」#E2 → 确认 → #N19 | 发现陌生设备,一次清干净(场景 B、C) |
①②③ 等价,都进同一个确认弹窗 #E9;④ 是唯一的批量路径。
设计稿需回改:633:23990(我的-设备-编辑)—— 去掉批量元素(不要「已选 N 项」、不要全选、不要底部操作条),减号点击进确认弹窗;633:24117(编辑-确定注销)—— 保留左滑、去掉编辑态外壳,见 #E4。
| 项 | 说明 |
|---|---|
| 入口 | 列表页「此设备」卡片内的红色行 |
| 前置 | 至少存在 1 台活跃会话;否则该行隐藏 |
| 确认弹窗 | 标题「提示」;正文「你确定要注销所有其它设备上的会话吗?」+ 后果说明「其它设备将立即退出登录,正在进行的加密会话与文件传输会被中断。」 |
| 按钮 | 注销所有其它设备上的会话(红色)/ 取消 |
| 成功 | 一次清空其它全部会话,回列表:活跃会话区显示一行「暂无其它活跃会话」;「注销所有其它设备上的会话」红色行同步隐藏。Toast「已注销其它 N 台设备」(报数量,不点名设备 —— 点名是单台路径的规则)。线框 #N19 |
| 失败 | 保持原样 + 红色 Toast + 可重试(#N09)。不引入 24 小时限制,故不存在"暂时不允许注销"的业务失败原因 |
埋点:点击入口、确认、取消、成功、失败(含失败原因)。
| 项 | 说明 |
|---|---|
| 入口 | 列表页底部「若我不上线」设置行 |
| 选项 | 1 周 / 1 个月 / 3 个月 / 6 个月(默认) / 1 年 |
| 当前值 | 在弹层中打勾高亮 |
| 生效 | 选择后立即生效,不另开确认页:弹层关闭 → 设置行回填新值 → Toast「已设置:1 个月不上线自动终止」 |
| 说明文案 | 设置行下方补一句:「超过该时长未上线的设备将自动退出登录」 |
| 后端行为 | 服务端定时任务扫描 last_active < now - 阈值 的会话并注销;被注销端按第八章处理 |
待确认 Q5:是否提供「从不」选项?提供等于允许会话无限期存在。
这是本次补缺的重点。原稿只有中间的「扫码取景」一屏,扫到码之后全断。
产品已确认:手机端不设「添加设备-引导说明页」,点「添加设备」直接进相机。
理由:扫码动作本身需要电脑端配合,用户一定是从电脑屏幕上的二维码进入这个流程的, 引导放在电脑端的二维码页更自然,不必让用户在手机上看一遍已知的操作步骤。
但这意味着引导责任转移到了电脑端,电脑端二维码页必须补齐三件事(不可省略):
| # | 电脑端二维码页必须有的内容 | 作用 |
|---|---|---|
| 1 | 「用 U8Chat App 扫描此二维码登录」+ 明确的操作指向 | 用户知道下一步该拿手机做什么 |
| 2 | 「二维码 5 分钟内有效,过期将自动刷新」 | 避免用户拿着过期码反复扫 |
| 3 | 「请勿将此二维码截图或发送给他人」 | 扫码 = 授权登录,这是 QR 登录最大的诈骗入口,必须由展示二维码的一端提醒 |
注意:这里说的「电脑端」包含网页版与桌面端两种形态 —— 两种的二维码页都要有上面三条。文案里不要写死"网页版"(出二维码的设备可能是任意一种)。
手机端只保留一行安全提示(见 6.8.2 副标题):传递「不要扫别人发来的码」这一条最关键的信息。
待确认 Q10:电脑端二维码页由谁出稿?若与本期不同期上线,需明确手机端在这段时间内的替代提示。
必改项
该功能仅支持设备登录二维码 改为常驻正向文案 + 安全提示:<br/>「对准电脑屏幕上的二维码,请勿扫描他人发来的二维码」<br/>(前半句正向引导,后半句承接防 QR 诈骗提示 —— 这是手机端唯一保留的一句安全提示)。该功能仅支持设备登录二维码 下沉为识别失败时的错误文案(见 6.10 #N05)。交互
扫码 = 授权一台设备登录你的账号。U8 涉及加密钱包,必须让用户看清「正在给谁授权」。
| 元素 | 内容 |
|---|---|
| 标题 | 登录确认 |
| 设备信息 | 设备名(如 MacBook Pro 16")+ 系统与浏览器(如 macOS · Safari 浏览器) |
| 安全提示(黄底) | 这台设备将可以查看你的聊天与资产。如果不是你自己在电脑上发起的登录,请点「取消」,并立即前往「我的 → 隐私和安全」修改密码。 |
| 主按钮 | 确认登录 |
| 次按钮 | 取消(回设备首页 #E1,二维码作废) |
| 二次验证 | ❌ 本期不加资金密码 / Face ID(已决策 D2)。点「确认登录」即授权 |
口径变更(2026-09-21):确认页不展示位置 / IP 地址 / 请求时间 —— 这三项只在本机「设备详情面板」(#E7 / #E8)里看。本页只回答「要不要把这台设备授权登录」,不承担「这台电脑是不是我的」的判断。
点「确认登录」到电脑端真正登入之间有服务端往返,需要过渡态,但不值得单独一屏:
| 规则 | 值 |
|---|---|
| 生成方 | 电脑端(网页版 / 桌面端)登录页 |
| 有效期 | 5 分钟(前端倒计时提示 + 过期自动刷新) |
| 一次性 | 一个二维码只能被成功授权一次 |
| 失效条件 | 超时、已被使用、用户在电脑端手动刷新 |
| 绑定 | 二维码需绑定发起设备的 UA / IP(服务端校验用);手机端确认页不展示位置与 IP |
它不是一条「服务通知」,而是一个官方账号 —— 名字就叫「U8 Chat」,带官方认证标识(蓝底对勾),像普通用户一样出现在会话列表里;用户可以点进去看资料页,也可以给它发消息。
本期只有这 3 条消息:
| # | 消息 | 触发场景 | 发给谁 |
|---|---|---|---|
| ① | 新用户首次登录 | 新注册用户登录第一台设备(账号下没有其它活跃设备) | 该设备自身 |
| ② | 登录验证码 | 新设备用「手机号 + 验证码」登录时。扫码登录不需要(扫码本身就是验证) | 已登录的活跃设备 |
| ③ | 新设备登录 | 账号产生一次新的登录(新会话) 就发 —— 含扫码、密码登录;同一台设备退出后重新登录也算 | 所有其它在线端(离线端下次打开可见) |
① 新用户首次登录(发给第一台设备自己)
欢迎使用 U8 Chat 👋
你的账号已在本设备登录成功。
这里是 U8 Chat 官方的安全通知通道,账号安全相关的消息都会从这里发出,比如:
· 账号从新设备登录
· 有人请求登录验证码
请认准官方认证标识 —— 我们不会通过其它账号联系你,也永远不会向你索要验证码。
措辞用「比如 / 例如」这类开放表述,不要写死「只发这几类消息」 —— 以后加消息时不必改这条老文案。
② 登录验证码(发到已登录设备)
登录验证码
630831
不要将此代码提供给任何人,即使他们声称来自 U8 Chat!
此验证码仅可用于登录你的 U8 Chat 账户,我们从不为此要求其他任何东西。
如果你没有尝试在其他设备上登录而请求此验证码,请忽略此消息。
验证码走哪条通道:
| 账号下的活跃设备 | 通道 |
|---|---|
| 有活跃设备 | 只走已登录设备的这个会话,不走短信 |
| 没有活跃设备(新用户第一台) | 走短信 |
兜底:登录页一直没收到应用内验证码时,提供「改用短信」入口。
本期没有两步验证(2FA):Telegram 的两步验证是在验证码之后再加一步密码,不是跳过验证码。U8 本期不做 2FA(见 2.2),因此验证码是登录的必经步骤。
③ 新设备登录(发给所有其它在线端)
新设备登录
亲爱的用户,我们检测到你的账号从一台新设备登录。
设备:U8Chat Web 12.0.43 A · Chrome 144 · macOS 14.5
位置:中国, 北京
时间:2026 年 9 月 17 日 14:32:07(北京时间)
如果不是你本人操作,请立即前往「我的 > 设备」终止该会话。
「设备」字段怎么组(三段,· 分隔):
| 段 | 内容 | 示例 | 来源 |
|---|---|---|---|
| 1 | 应用与版本 | U8Chat Web 12.0.43 A | 客户端上报,规则见 7.2 |
| 2 | 机型 / 浏览器 | Chrome 144、MacBook Air M1、iPhone 17 Pro | 系统上报,见 6.2 字段表 |
| 3 | 操作系统 | macOS 14.5、iOS 18.2、Android 14 | 客户端上报 |
「位置」字段:城市, 国家(中文 —— 面向用户的通知里不用英文;列表页仍按 7.3 用英文,见该节说明)。
「时间」字段:2026 年 9 月 17 日 14:32:07(北京时间),必须带时区标注。
官方账号的资料页 #N20(点头像进入)
| 项 | 规则 |
|---|---|
| 认证标识 | 名字后缀蓝底对勾;会话列表与资料页一致 |
| 「编辑」按钮 | 没有 —— 它不是你的资料,也不可编辑 |
| 状态位 | 显示「客服」两个字;不显示在线 / 最后上线时间,也不显示设备与位置 |
| 手机号 / 简介等信息卡 | 没有 —— 资料页只有头像、名字、状态与两个操作,不放信息卡(「未绑定」这类空值反而会让人以为可以绑定) |
| 加好友 / 拉黑 / 举报 | 没有这些入口 |
| 静音 | 有 —— 可以关掉它的通知(消息仍留在会话里) |
| 发消息 | 可以,入口在资料页与会话输入框 |
通用规则
用户给这个号发消息走哪条通道
这条通道属于聊天模块,不在本 PRD(设备管理)的实现范围内,此处只约定它与官方账号的关系。
Telegram 的这条规则:新登录的设备在 24 小时内不能终止其它会话(只有「新设备」被冻结,从旧设备操作不受限)。
U8 本期不引入。原因:U8 在有活跃设备时,登录验证码只发到已登录设备(不走短信),攻击者原本就难登进来;而这条规则会挡住「丢手机后用新设备立刻切断旧设备」这一刚需 —— 旧设备上有钱包,等不起 24 小时。
不引入带来的两个后果(开发与测试都需要知道):
影响:被盗后的防护全部压在 6.9.1 的「新设备登录」通知 与 6.8 扫码确认授权 上,这两项不建议再砍。
| 状态 | 页面 | 规则 |
|---|---|---|
| 列表加载中 | — | 不做骨架屏:正常等待数据返回(已决策,见第九节) |
| 列表加载失败 | — | 在设备列表页之上弹一个提示框「网络连接已中断」,不带按钮;不展示缓存数据。不存在独立的「检查网络」页 |
| 活跃会话为空 | #E1 | 「此设备」卡片照常显示;「活跃会话」区一行「暂无其它活跃会话 / 你只在这台手机上登录着 U8Chat」;隐藏「注销所有其它设备」行。不单独出屏 |
| 扫码:不是设备登录二维码 / 已失效 | #N05 | 取景框转红 + 震动 + 提示「该二维码不是设备登录二维码,或已失效。请在电脑上的 U8Chat(网页版 / 桌面端)重新获取登录二维码并扫描新二维码。」 |
| 扫码:二维码已被使用 | #N05 | 提示「该二维码已被使用,请重新生成」 |
| 扫码:相机权限未开启 | #N06 | 弹窗引导(不占整屏):第一次授权走系统原生弹窗;权限已被关闭时弹原稿那版应用内弹窗(「请允许访问」/「没有相机权限」/「不是现在」「设置」),从设置返回后自动重查权限。不提供「从相册选择」 |
| 注销成功 | #N08 | Toast + 列表移除 |
| 注销失败 | #N09 | 红色 Toast + 保留原数据 + 可重试 |
| 时间差 | 显示 |
|---|---|
| < 1 分钟 | 刚刚 |
| < 60 分钟 | N 分钟之前 |
| < 24 小时 | N 小时之前 |
| 昨天 | 昨天 HH:mm |
| 2~7 天 | N 天之前 |
| > 7 天且当年 | MM 月 DD 日 HH:mm |
| 跨年 | YYYY 年 MM 月 DD 日 |
设计稿现状:3 分钟之前与09/11/26、06/10/26混用,且是美式 MM/DD/YY。必须回改。
| 平台 | 图标 | 应用名称示例 |
|---|---|---|
| iOS | 手机 | U8Chat iOS 12.8.1 |
| Android | 手机 | U8Chat Android 12.7.3 |
| macOS | 笔记本 | U8Chat macOS 12.6 APP_STORE |
| Windows | 笔记本 | U8Chat Windows 12.6 |
| Web | 浏览器 | U8Chat Web 12.0.43 A |
设计稿问题:MacBook Air M1、Chrome 152、Samsung 三台设备的图标全是绿色同款,无法区分平台。必须按平台区分图标。
城市,国家(英文,与设计稿一致);面向用户的通知消息里用中文 城市, 国家(见 6.9.1)。字段构成与来源
| 字段 | 含义 / 成分 | 来源 | 格式 | 示例 |
|---|---|---|---|---|
| 设备名 | 机型或浏览器名 | 系统上报 | 原样展示 | iPhone 17 Pro、MacBook Air M1、Chrome 152(网页端用浏览器名) |
| 应用与版本 | U8Chat 这个 App 的平台 + 版本(带渠道时拼渠道) | 客户端上报 | U8Chat <平台> <版本> | U8Chat iOS 12.8.1、U8Chat macOS 12.6 APP_STORE |
| 操作系统 | 设备本身的系统版本 | 客户端上报 | <OS> <版本> | macOS 14.5、iOS 18.2、Android 14 |
| 位置 | IP 估算的城市 / 国家 | 服务端(IP 库) | 列表与详情:城市,国家(英文);通知消息:城市, 国家(中文) | Taipei,Taiwan / 中国, 北京 |
| IP 地址 | 完整 IP | 服务端 | 点分十进制 | 203.0.113.24 |
| 登录时间 | 本次会话的登录时刻 | 服务端 | YYYY/MM/DD HH:mm | 2026/09/11 09:12 |
| 最后活跃时间 | 最近一次活动时刻 | 服务端 | 见 7.1 | 3 分钟之前 |
| 在线状态 | 只有「此设备」有 | 服务端 | 固定显示「在线」(蓝色) | 在线 |
⚠️ 别把两个「平台」弄混:「应用与版本」里的平台是 U8Chat 这个 App 的(U8Chat macOS 12.6);「操作系统」是设备本身的(macOS 14.5)。两者不同,同时出现时不能只写一个。
三个展示位分别显示什么
| 展示位 | 显示哪些字段 | 版式 |
|---|---|---|
| 列表行(#E1 每台一行) | 设备名 · 应用与版本 · 位置 + 最后活跃时间 | 三行紧凑:设备名 / 应用与版本 / 位置 · 时间 |
| 详情面板(#E7 / #E8 / #N16) | 设备名(大号)· 在线状态或最后活跃 · 应用与版本 · 位置 · IP 地址 · 登录时间(活跃会话再加最后活跃时间) | 顶部图标 + 设备名,下面是信息卡逐行 |
| 通知消息(#N17) | 应用与版本 · 机型或浏览器 · 操作系统 合成一行,再加位置、时间 | 见 6.9.1 |
各字段的展示约束
| 场景 | 各端表现 |
|---|---|
| A 端注销 B 端的会话 | B 端立即断开(WebSocket 推送),清掉本地会话数据,弹窗「你的账号已在其它设备注销,当前设备已退出登录」,点确定回登录页 |
| B 端离线时被注销 | 下次打开 / 下次请求时兜底:直接回登录页并给同一提示 |
| 扫码授权登录成功 | 电脑端立即进入已登录状态;手机端列表新增该设备;所有端收到安全通知 |
| 扫码被取消 | 电脑端二维码作废,提示「登录请求已取消,请刷新二维码」 |
| 密码被修改 | 所有会话作废,全部端回登录页(与第八章同一套提示文案体系) |
待确认 Q8:B 端被注销时,是"实时踢出"还是"下次请求时才发现"?前者体验好但需要长连接可靠;后者实现简单但有延迟。建议:实时踢 + 兜底。
| 事件 | 触发时机 | 关键参数 |
|---|---|---|
devices_page_view | 进入设备列表 | 来源(我的页 / 通知) |
devices_list_load | 列表请求返回 | 结果(成功/失败)、设备数、耗时 |
device_item_click | 点击某台设备 | 设备平台、是否此设备 |
device_session_terminate | 注销单会话 | 入口(详情页按钮 / 列表左滑)、结果、失败原因 |
device_terminate_all | 注销所有其它设备 | 会话数、结果、失败原因 |
device_auto_terminate_set | 设置自动终止时长 | 原值、新值 |
device_link_start | 进入扫码页 | — |
device_scan_result | 扫码识别 | 结果(成功/非设备码/失效/已使用)、耗时 |
device_link_confirm | 确认授权 | 结果(确认/取消)、耗时 |
device_link_success | 电脑端登录成功 | 总耗时(从扫码页算起) |
device_security_notice_click | 点击安全通知的「前往设备管理」 | — |
功能
体验
性能
| # | 问题 | 决策 | 落地说明 |
|---|---|---|---|
| D1 | 扫码登录是否加手机端「确认授权」? | ✅ 要加 | 本期必做的新页面:确认页 #N02;配套状态:结果 #N04、失败态 #N05(确认中的状态并入 #N02) |
| D2 | 确认授权前是否再验资金密码 / Face ID? | ❌ 本期不加 | 点「确认登录」即授权。安全兜底 = 新设备登录通知(6.9.1)+ 用户可随时在设备管理里注销该设备 |
| D3 | 是否引入「新设备 24 小时内不能注销其它会话」? | ❌ 不引入 | 新设备登录后即可立即注销其它会话;「注销失败」不含此类业务原因(详见 6.9.2) |
| D4 | 底部说明是否包含 Linux? | ❌ 不含 Linux | 统一文案:「U8Chat 官方应用可用于 iPhone、iPad、Android、macOS、Windows。」 |
| D5 | 编辑态是取消还是保留? | ✅ 保留,但只支持一台一台删 | 主页「编辑」→ 其它设备每行出现红色减号(待删除态)→ 点减号进确认弹窗 #E9 → 删这一台;不做全选 / 批量提交。原稿 633:23990 需回改(去掉批量元素)。「活跃会话」为空时「编辑」入口隐藏(见 6.5) |
| D6 | 手机端是否要「添加设备-引导说明页」? | ❌ 不要 | 点「添加设备」直接进相机;扫码前的引导由电脑端二维码页承担(见 6.8.1 的三条必补内容) |
| D7 | 新登录的设备要不要在列表里打「新」标记? | ❌ 不引入 | 该标记是补线框时自加的:Figma 原稿没有、Telegram 也不这么做(它靠登录通知)。且新登录设备最后活跃时间是「刚刚」,本来就在最上面,标记信息量低。提醒统一由 #N17 新设备登录通知承担(见 6.2 排序规则) |
| D8 | 设备列表的「空态 / 加载中 / 加载失败」要不要各自出屏? | ❌ 三屏都不出 | ①空态:本机永远在,列表不会全空 —— 「此设备」卡片照常显示,只在「活跃会话」区显示一行提示、红线隐藏;②加载中:不做骨架屏;③加载失败:在列表页之上弹提示框「网络连接已中断」,不带按钮、也不存在独立的「检查网络」页。规则写进 6.2 与 6.10 |
| D10 | 相机权限未开启怎么处理? | ✅ 弹窗引导,且区分两种情况 | ①第一次授权:进扫码页时系统弹原生授权弹窗;②权限已被关闭:在扫码页之上弹应用内弹窗(沿用 Figma 原稿文案:「请允许访问」/「没有相机权限」/「不是现在」「设置」),从设置返回后自动重查权限。#N06 由整屏改为弹窗;不提供「从相册选择」 |
| # | 问题 | 建议 | 影响范围 |
|---|---|---|---|
| Q1 | 「我的」页「设备」入口是否做异常红点? | 建议做,但可延后 | 入口 |
| Q2 | 扫码后、电脑端确认前,新设备是否先以「等待确认」状态插入列表? | 建议不做,成功后再插入 | 列表 |
| Q3 | 会话详情是否加「允许接收通知 / 允许发起资产操作」两个开关? | 不做 —— U8 特有设想,与 Telegram 的同类开关场景对不上 | 详情 |
| Q5 | 「自动终止旧会话」是否提供「从不」? | 不建议提供 | 设置 |
| Q8 | 被注销设备是实时踢出还是下次请求才发现? | 实时踢 + 兜底 | 跨端 |
| Q10 | 电脑端二维码页(含引导文案)由谁出稿、是否与本期同期? | 若不同期,需定手机端在这段时间的替代提示 | 扫码链路 |
| 性质 | 屏 | 线框图锚点 | Figma |
|---|---|---|---|
| 已有设计稿 | 我的-设备(主页) | #E1 | 633:23747 |
| 已有设计稿 | 注销会话提示弹窗 | #E2 | 633:23862 |
| 已有设计稿 | 左滑注销单台会话(原「编辑-确定注销」,编辑态外壳去掉) | #E4 | 633:24117 |
| 已有设计稿 | 添加设备扫码 | #E5 | 633:24240 |
| 已有设计稿 | 自动终止旧会话 | #E6 | 633:24260 |
| 已有设计稿 | 查看此设备信息 | #E7 | 633:24386 |
| 已有设计稿 | 查看活跃会话设备信息 | #E8 | 633:24528 |
| 已有设计稿 | 活跃会话注销确认 | #E9 | 633:24672 |
| 已有设计稿 | 我的-设备-编辑(逐个删,见 6.5) | #E3 | 633:23990 |
| 新增页面 | 扫码成功-确认授权 | #N02 | — |
| 同一页的状态 | 添加设备-成功反馈(#N02 之后) | #N04 | — |
| 同一页的状态 | 扫码-识别失败(#E5 的异常态) | #N05 | — |
| 同一页的状态 | 扫码-相机权限未开启(#E5 的权限弹窗) | #N06 | — |
| 同一页的状态 | 注销会话-成功反馈(#E1 的结果态) | #N08 | — |
| 同一页的状态 | 注销会话-失败(#E1 / #E9 的失败态) | #N09 | — |
| 同一页的状态 | 注销所有其它设备-成功反馈(#E1 / #E2 的结果态,一次清空) | #N19 | — |
| 设计稿回改 | 会话详情-字段补全(回改 #E8) | #N16 | — |
| 其它模块 | 被注销设备端-退出登录(登录模块) | #N15 | — |
| 其它模块 | 官方账号 U8 Chat(登录系统消息,聊天模块) | #N17 | — |
| 其它模块 | 官方账号 U8 Chat-资料页(聊天模块) | #N20 | — |
已取消的屏(不在线框清单里):N03 确认中、N11 编辑态未选中、N12 自动终止设置成功、N10 编辑态批量操作栏、N07 活跃会话-空态、N13 加载中、N14 加载失败。它们的要求已并入对应主屏与 6.2 / 6.10 的规则。
设备列表 #E1 → 扫码 #E5 → 确认授权 #N02 → 添加成功 #N04 → 会话详情 #E8 → 注销确认 #E9 → 注销成功 #N08 → 自动终止设置 #E6 → 回到 设备列表 #E1
另一条路径(除本机外全删):设备列表 #E1 → 点「注销所有其它设备上的会话」红色行 → 确认弹窗 #E2 → 全删成功反馈 #N19(一次清空 + Toast 报数量)。
在 index.html 中点「▶ 走一遍主流程」可自动播放第一条顺序;第二条路径可在主页点那条红色行手动走一遍。
633:23990 保留,但去掉批量元素(不要「已选 N 项」、不要全选、不要底部操作条);633:24117 保留左滑、去掉编辑态外壳;主页 633:23747 右上角「编辑」入口保留(活跃会话为空时隐藏)。iOS 2.0 画板与「设备管理」画布两份完全相同的 9 屏)。