U8 产品原型站功能原型演示与产品需求文档 · 供开发与决策快速浏览

U8 Chat 2.0 · 移动端「设备管理」产品需求文档(PRD)

资料与设置 17478 字 02_PRD-设备管理.md 更新于 2026-09-23
← 返回功能演示列表
项目内容
文档版本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)。删除会话有「逐个删」与「除本机外全删」两类路径。产品决策见 第十一章。


一、背景与目标

1.1 背景

U8 Chat 支持同一个账号在多个端同时在线(iOS、Android、Web、桌面端)。这带来两个必须解决的问题:

  1. 用户看不见:用户无法知道自己的账号此刻登录在哪几台设备上。
  2. 用户管不了:一旦发现陌生设备(账号被盗、旧手机没退登录、公共电脑忘了退),没有办法把它踢下线。

同时,U8 Chat 与 U8 加密钱包共用账号。设备即资产入口——一台陌生设备在线,等于资产查看权限暴露。因此设备管理的安全等级要求高于普通 IM。

1.2 现状问题(本次要解决的)

#问题影响
1支持多端在线,但设备管理只在设置里有一行入口,且「添加设备」链路两端断裂扫码登录走不通,用户只能靠密码在别的端登录
2注销会话后没有任何反馈用户不知道成没成,会重复操作,甚至误以为已生效(安全误判)
3编辑态(批量注销)只画了半个界面,且与「全删」重复会让人不知道批量该走哪个入口(已决策:不补齐编辑态,由「除本机外全删」承接,见 6.5)
4扫码登录无手机端确认扫到别人发的二维码 = 账号直接被登走(Telegram 最典型的诈骗手法)
5没有新设备登录提醒账号被盗后用户可能几周都不会发现

1.3 目标

业务目标

  • 让用户能自助管理登录设备,降低因账号被盗导致的资产损失与客诉。

用户目标

  • 3 步之内完成「发现陌生设备 → 踢它下线」。
  • 在电脑上登录时,用手机扫码 10 秒内完成,且能看清自己在给哪台设备授权。

成功指标(上线首月)

指标目标
设备管理页周访问 UV / 活跃用户≥ 15%
「注销所有其它设备」操作成功率≥ 98%
扫码登录成功率(进入扫码页 → 电脑端登录成功)≥ 85%
从「设备列表」到「注销完成」的平均步数≤ 3 步
因"陌生设备"产生的安全类客诉环比下降 50%

二、范围

2.1 本期做

  • 设备列表(此设备 + 活跃会话)
  • 单台会话注销(详情页按钮入口 + 列表左滑)
  • 一键注销所有其它设备
  • 自动终止旧会话(超时自动登出)
  • 添加设备(扫码登录)完整闭环:扫码 → 手机端确认授权 → 电脑端登录 → 结果反馈
  • 电脑端二维码页的引导文案(手机端不再出引导说明页,见 6.8.1)
  • 全部状态页:加载中 / 空态 / 失败 / 成功反馈
  • 新设备登录的安全通知(站内系统消息)

2.2 本期不做(明确划出)

不做的事原因
扫码授权前的资金密码 / Face ID 二次验证已决策本期不做(见 D2)
「新设备 24 小时内不能注销其它会话」的安全规则已决策本期不引入(见 D3)
手机端的「添加设备-引导说明页」已决策不做(见 D6);点「添加设备」直接进相机,引导由电脑端二维码页承担
编辑态的批量能力(勾选 / 全选 / 注销所选)不做:编辑态保留,但只支持一台一台删(见 D5 / 6.5)。批量删与「注销所有其它设备上的会话」重复
登录两步验证(2FA)本期不做 —— 影响见 6.9.1:没有 2FA 时,验证码是登录的必经步骤
深色模式、大字号无障碍适配随全局一起排期

三、名词定义

名词定义
此设备用户当前正在操作的这台设备。不能被自己注销。
活跃会话除「此设备」外,其它在线的登录会话(含 Web / 桌面端)。
注销会话结束某一台设备上的登录状态。该设备立即掉线,需重新登录。
注销所有其它设备上的会话除「此设备」外,一次性结束全部会话。
自动终止旧会话设置一个时长,超过该时长未上线的设备自动退出登录。
设备登录二维码由电脑端(网页版 / 桌面端) 在登录页展示、仅供手机端扫描授权登录的二维码。有效期 5 分钟。
扫码登录(链接设备)手机端扫描电脑屏幕上的二维码,经手机端确认后,电脑端获得一个独立会话。
会话 ID每一次登录的唯一标识。同一台设备重复登录会产生新会话。

四、用户与场景

只有一个用户角色:账号持有者本人(无管理员、无子账号)。

场景 A · 例行巡查(低频、低风险)

用户换过几台设备,想确认一下现在还有哪些端在线。 路径:我的 → 设备 → 看到 3 台活跃会话,其中一台是半年前的公司电脑 → 点进详情 → 注销会话 → Toast「已注销」。

场景 B · 发现异常登录(低频、高风险、本功能的核心场景)

用户收到「新设备登录」通知(6.9.1),设备名和位置都不是自己的。 路径:通知 → 前往设备管理 → 看到陌生设备 → 点「注销所有其它设备上的会话」→ 确认 → Toast 成功。 要求:从收到通知到踢掉设备,不超过 30 秒、不超过 3 步。

场景 C · 换手机 / 旧设备忘了退

路径:新手机上登录 → 我的 → 设备 → 点「注销所有其它设备上的会话」→ 确认(一步清掉所有旧设备)。

场景 D · 在电脑上登录(扫码)

路径:在电脑端打开 U8Chat(网页版 / 桌面端)→ 按页面引导切到二维码登录 → 手机:我的 → 设备 → 添加设备 → 扫码 → 确认登录 → 电脑端登入成功,手机端列表新增该设备 + Toast。

场景 E · 公共电脑用完就走

用户在网吧/酒店电脑上用了网页版,离开前在手机上把它踢掉。 依赖:场景 A + 「最后活跃时间」字段足够准确。


五、功能总览

模块功能点页面(线框图)优先级
A 入口「我的」页设备入口—P0
B 列表设备列表页(此设备 / 活跃会话)#E1P0
B 列表加载中 / 空态 / 加载失败—(不出独立屏,规则见 6.2 异常与边界)状态
C 详情会话详情面板(含字段补全)#E7 #E8 #N16P0
D 注销单会话注销 + 确认#E9P0
D 注销列表左滑注销单台(原编辑态里的左滑,保留并独立)#E4已有 · 需回改
D 注销注销所有其它设备 + 确认#E2P0
D 注销成功 / 失败反馈#N08 #N09状态
E 设置自动终止旧会话(含设置后回填)#E6已有
F 扫码扫码 → 确认授权 → 结果#E5 #N02 #N04新增页面 + 状态
F 扫码失败态 / 权限态#N05 #N06状态
G 安全新设备登录通知#N17其它模块(聊天)
G 安全被注销设备端表现(跨端)#N15其它模块(登录)

六、需求详述

6.1 入口(P0)

项说明
位置「我的」页 → 列表第 7 行「设备」(Figma 573:23903 已有此行)
右侧默认无内容;有异常时显示红点(异常定义见下)
异常定义① 存在"最后活跃时间在 30 天内"但用户从未在自己的设备列表里见过的新会话 → 红点提示「有新的登录设备」
点击进入设备列表页 #E1

待确认 Q1:红点规则是否要做?做的话需要"用户见过"的本地标记,属于客户端存储。


6.2 设备列表页 #E1(P0)

页面结构(自上而下)

  1. 导航栏:‹ 返回 · 标题「设备」 · 右侧无操作(原「编辑」入口已决策删除,见 6.5)
  2. 扫码登录引导区:二维码图标 + 「通过扫描二维码登录」+ 主按钮「添加设备」
  3. 此设备 分组
    • 一张卡片:设备图标 · 设备名 · 应用与版本 · 位置 · 「在线」
    • 卡片内一条红色操作行:注销所有其它设备上的会话
    • 下方灰色说明:登出除此设备外的所有设备
  4. 活跃会话 分组
    • 每台会话一张卡片:设备图标 · 设备名 · 应用与版本 · 位置 · 最后活跃时间
  5. 底部说明:U8Chat 官方应用可用于 iPhone、iPad、Android、macOS、Windows。
  6. 自动终止旧会话 分组
    • 一行设置项:「若我不上线」→ 当前值(如「6 个月」)

字段与数据来源

字段来源规则
设备名系统上报如 iPhone 17 Pro、MacBook Air M1、Chrome 152(网页版用浏览器名)
应用与版本客户端上报格式 U8Chat <平台> <版本>,如 U8Chat iOS 12.8.1;带渠道时拼接渠道,如 U8Chat macOS 12.6 APP_STORE
位置IP 估算格式 城市,国家(英文,与设计稿一致);必须同时展示免责说明
在线状态服务端此设备固定显示「在线」(蓝色);活跃会话显示最后活跃时间
最后活跃时间服务端规则见 7.1

排序规则

  • 此设备固定在最上(不参与排序)。
  • 活跃会话按「最后活跃时间」倒序。
  • 新登录的设备自然排在最前(其最后活跃时间即「刚刚」)。
  • 不额外打「新」标记(决策 D7)—— 登录提醒统一由官方账号 U8 Chat 承担(见 6.9.1)。

数量与滚动

  • 列表不做分页;全部展示,超出即可滚动。
  • 设备数 > 20 时(同一账号极少出现),在列表底部追加「仅显示最近 20 台设备」的说明。

交互

操作结果
点「此设备」卡片打开此设备详情面板 #E7
点「注销所有其它设备上的会话」弹出确认弹窗 #E2
点某台活跃会话打开会话详情面板 #E8 / #N16
左滑某台活跃会话露出红色「注销」按钮 → 点击后进确认弹窗 #E9(快捷路径,与详情页按钮等价)
点右上角「编辑」进编辑态 #E3:其它设备每行出现红色减号 → 点减号进确认弹窗 #E9(只支持逐个删,见 6.5)
点「添加设备」直接进入扫码页 #E5
下拉刷新重新拉取列表

异常与边界

情况处理
只有此设备照常显示「此设备」卡片(本机永远在,列表不会全空);「活跃会话」区显示一行「暂无其它活跃会话 / 你只在这台手机上登录着 U8Chat」;「注销所有其它设备」行隐藏。不单独出空态页
列表加载中不做骨架屏(已决策):正常等待数据返回
加载失败在设备列表页之上弹一个提示框「网络连接已中断」,不带按钮;失败时不展示任何缓存数据,避免用户基于旧数据做注销决策
扫码添加设备中该设备以「等待确认」状态临时插入列表(可选,见 Q2)

埋点:页面曝光、拉取成功/失败、点击「添加设备」/某会话/注销所有其它设备、左滑注销。


6.3 会话详情面板 #E8 / #E7 / #N16(P0)

触发:点击列表中的任一设备(含此设备)。

结构(自下而上的 Sheet)

  1. 左上角关闭按钮 ✕
  2. 设备图标 + 设备名(大号)
  3. 状态行:此设备→「在线」(蓝);活跃会话→「最后活跃:3 分钟之前」(灰)
  4. 信息卡(本次补全的字段)
    • 此设备:应用程序、位置、IP 地址、登录时间
    • 活跃会话:应用程序、位置、IP 地址、登录时间、最后活跃时间
  5. 免责说明:该位置根据 IP 地址估算,可能并不准确
  6. 底部红色按钮:注销会话(此设备详情面板中不出现此按钮)
    • 这是「一个一个删」的可见入口:列表左滑是隐形手势,此按钮保证用户一定找得到删除路径。编辑态取消后,它成为列表页之外唯一的单台删除入口,不要砍。

必改项

  • 删除设计稿中的残留文案「预览兑换」。
  • 修正占位数据:MacBook Air M1 的「应用程序」应为 macOS 版本,位置应与列表一致。
  • 确认弹窗点名设备(见 6.4)。

不做的(避免过度设计)

  • 不加会话级开关。「允许接收通知 / 允许在此设备发起资产操作」是 U8 特有的设想;

    Telegram 的同类开关(新密钥聊 / 接听来电)与 U8 的场景对不上,本期不引入。


6.4 单会话注销 #E9(P0)

步骤说明
1用户点击详情面板底部「注销会话」
2弹出确认弹窗。标题「提示」,正文 「注销 MacBook Air M1 的会话?」(必须点名设备)
3附一句后果:「该设备将立即退出登录,需要重新登录才能使用。」
4按钮:注销会话(红色,主)/ 取消
5成功 → 关闭面板、该设备从列表移除、Toast「已注销 MacBook Air M1 的会话」#N08
6失败 → 保持原样 + 红色 Toast「注销失败,请检查网络后重试」#N09,可在面板底部重试
7若列表中已无其它设备 → 只在「活跃会话」区显示一行「暂无其它活跃会话」,不出独立空态屏

被注销端:见第八章 / #N15。


6.5 编辑态(逐个删)#E3(P0)

入口与形态

项说明
入口主页 #E1 右上角「编辑」;「活跃会话」为空时该入口隐藏
形态进入后,其它设备(活跃会话)每行左侧出现红色减号(待删除态);「此设备」卡片不带减号
点红色减号进确认弹窗 #E9(与左滑注销等价),确认后该台从列表移除
退出右上角「完成」(✓)回列表
不做「已选 N 项」计数、全选、底部批量提交按钮 —— 只支持一台一台删

设计意图

进入编辑态只为露出删除控件(每行红色减号),不做多选批量 —— 批量删与 6.6 的「注销所有其它设备上的会话」重复,且要多两步(编辑 → 全选 → 提交)。

删除会话的全部路径

#路径入口覆盖场景
①左滑列表页某台会话左滑 #E4 → 确认 #E9只怀疑其中一台
②详情页按钮进 #E8 → 底部「注销会话」→ 确认 #E9想先看详情再决定
③编辑态减号主页「编辑」→ #E3 → 点某台的红色减号 → 确认 #E9想在一屏里逐台清理
④除本机外全删主页「注销所有其它设备上的会话」#E2 → 确认 → #N19发现陌生设备,一次清干净(场景 B、C)

①②③ 等价,都进同一个确认弹窗 #E9;④ 是唯一的批量路径。

设计稿需回改:633:23990(我的-设备-编辑)—— 去掉批量元素(不要「已选 N 项」、不要全选、不要底部操作条),减号点击进确认弹窗;633:24117(编辑-确定注销)—— 保留左滑、去掉编辑态外壳,见 #E4。


6.6 注销所有其它设备上的会话 #E2(P0)

项说明
入口列表页「此设备」卡片内的红色行
前置至少存在 1 台活跃会话;否则该行隐藏
确认弹窗标题「提示」;正文「你确定要注销所有其它设备上的会话吗?」+ 后果说明「其它设备将立即退出登录,正在进行的加密会话与文件传输会被中断。」
按钮注销所有其它设备上的会话(红色)/ 取消
成功一次清空其它全部会话,回列表:活跃会话区显示一行「暂无其它活跃会话」;「注销所有其它设备上的会话」红色行同步隐藏。Toast「已注销其它 N 台设备」(报数量,不点名设备 —— 点名是单台路径的规则)。线框 #N19
失败保持原样 + 红色 Toast + 可重试(#N09)。不引入 24 小时限制,故不存在"暂时不允许注销"的业务失败原因

埋点:点击入口、确认、取消、成功、失败(含失败原因)。


6.7 自动终止旧会话 #E6(P1)

项说明
入口列表页底部「若我不上线」设置行
选项1 周 / 1 个月 / 3 个月 / 6 个月(默认) / 1 年
当前值在弹层中打勾高亮
生效选择后立即生效,不另开确认页:弹层关闭 → 设置行回填新值 → Toast「已设置:1 个月不上线自动终止」
说明文案设置行下方补一句:「超过该时长未上线的设备将自动退出登录」
后端行为服务端定时任务扫描 last_active < now - 阈值 的会话并注销;被注销端按第八章处理

待确认 Q5:是否提供「从不」选项?提供等于允许会话无限期存在。


6.8 添加设备(扫码登录)完整闭环 #E5→#N02→#N04(P0)

这是本次补缺的重点。原稿只有中间的「扫码取景」一屏,扫到码之后全断。

6.8.1 步骤 1:扫码 #E5 —— 手机端不做引导说明页(已决策 D6)

产品已确认:手机端不设「添加设备-引导说明页」,点「添加设备」直接进相机。

理由:扫码动作本身需要电脑端配合,用户一定是从电脑屏幕上的二维码进入这个流程的, 引导放在电脑端的二维码页更自然,不必让用户在手机上看一遍已知的操作步骤。

但这意味着引导责任转移到了电脑端,电脑端二维码页必须补齐三件事(不可省略):

#电脑端二维码页必须有的内容作用
1「用 U8Chat App 扫描此二维码登录」+ 明确的操作指向用户知道下一步该拿手机做什么
2「二维码 5 分钟内有效,过期将自动刷新」避免用户拿着过期码反复扫
3「请勿将此二维码截图或发送给他人」扫码 = 授权登录,这是 QR 登录最大的诈骗入口,必须由展示二维码的一端提醒

注意:这里说的「电脑端」包含网页版与桌面端两种形态 —— 两种的二维码页都要有上面三条。文案里不要写死"网页版"(出二维码的设备可能是任意一种)。

手机端只保留一行安全提示(见 6.8.2 副标题):传递「不要扫别人发来的码」这一条最关键的信息。

待确认 Q10:电脑端二维码页由谁出稿?若与本期不同期上线,需明确手机端在这段时间内的替代提示。

6.8.2 步骤 2:扫码 #E5(已有稿,需改)

必改项

  • 副标题 该功能仅支持设备登录二维码 改为常驻正向文案 + 安全提示:

    「对准电脑屏幕上的二维码,请勿扫描他人发来的二维码」 (前半句正向引导,后半句承接防 QR 诈骗提示 —— 这是手机端唯一保留的一句安全提示)。

  • 原 该功能仅支持设备登录二维码 下沉为识别失败时的错误文案(见 6.10 #N05)。
  • 不需要「手电筒」,也不加「相册」入口(已决策):设备登录二维码只可能出现在电脑屏幕上 —— 不存在暗光补光,也不存在扫纸质码 / 相册图片的场景。原稿底部的手电筒去掉。

交互

  • 识别成功 → 不直接登录,进入确认页 #N02。
  • 识别失败 → #N05(见 6.10)。
  • 相机权限未开启 → 弹窗引导(#N06,不占整屏),分两种情况:
  • 第一次授权:进扫码页时系统弹原生授权弹窗 —— 点「允许」进相机;点「不允许」转入情况 2。
  • 权限已被关闭:在扫码页之上弹应用内弹窗 —— 沿用 Figma 原稿的文案与形态(系统风、两个文字按钮):标题「请允许访问」、副文案「没有相机权限」、按钮「不是现在」「设置」。「不是现在」= 关闭弹窗留在扫码页;「设置」= 跳系统设置,返回后自动重查权限,已打开就直接进相机。
  • 弹窗可「取消」关闭;关闭后停留在扫码页,页面上给一个「打开相机权限」的次级入口。
  • 不提供「从相册选择」 —— 设备码只可能在电脑屏幕上。

6.8.3 步骤 3:确认授权 #N02(新增,最关键)

扫码 = 授权一台设备登录你的账号。U8 涉及加密钱包,必须让用户看清「正在给谁授权」。

元素内容
标题登录确认
设备信息设备名(如 MacBook Pro 16")+ 系统与浏览器(如 macOS · Safari 浏览器)
安全提示(黄底)这台设备将可以查看你的聊天与资产。如果不是你自己在电脑上发起的登录,请点「取消」,并立即前往「我的 → 隐私和安全」修改密码。
主按钮确认登录
次按钮取消(回设备首页 #E1,二维码作废)
二次验证❌ 本期不加资金密码 / Face ID(已决策 D2)。点「确认登录」即授权

口径变更(2026-09-21):确认页不展示位置 / IP 地址 / 请求时间 —— 这三项只在本机「设备详情面板」(#E7 / #E8)里看。本页只回答「要不要把这台设备授权登录」,不承担「这台电脑是不是我的」的判断。

6.8.4 确认中的状态 —— 不单独出页面

点「确认登录」到电脑端真正登入之间有服务端往返,需要过渡态,但不值得单独一屏:

  • 按钮进入 loading 并禁用重复点击,页面其余部分保持可见(或加一层浅遮罩)。
  • 建议 15 秒超时。
  • 超时 / 失败:页面不变,把按钮上的文案换成

    「登录确认失败,请在电脑端刷新二维码后重试」,并出现「重试」按钮。

  • 用户取消:可中断,回设备首页 #E1。

6.8.5 步骤 5:结果反馈 #N04(新增)

  • 成功 → 回到设备列表,Toast「设备已添加」;新设备插入列表顶部(不打标记,见 6.2)。
  • 电脑端同步进入已登录状态。
  • 同时触发安全通知(6.9)。

6.8.6 二维码规则(后端)

规则值
生成方电脑端(网页版 / 桌面端)登录页
有效期5 分钟(前端倒计时提示 + 过期自动刷新)
一次性一个二维码只能被成功授权一次
失效条件超时、已被使用、用户在电脑端手动刷新
绑定二维码需绑定发起设备的 UA / IP(服务端校验用);手机端确认页不展示位置与 IP

6.9 安全通知与限制(本期做)

6.9.1 官方账号「U8 Chat」+ 本期 3 条消息 #N17 / #N20

它不是一条"服务通知",而是一个官方账号 —— 名字就叫「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(点头像进入)

项规则
认证标识名字后缀蓝底对勾;会话列表与资料页一致
「编辑」按钮没有 —— 它不是你的资料,也不可编辑
状态位显示「客服」两个字;不显示在线 / 最后上线时间,也不显示设备与位置
手机号 / 简介等信息卡没有 —— 资料页只有头像、名字、状态与两个操作,不放信息卡("未绑定"这类空值反而会让人以为可以绑定)
加好友 / 拉黑 / 举报没有这些入口
静音有 —— 可以关掉它的通知(消息仍留在会话里)
发消息可以,入口在资料页与会话输入框

通用规则

  • 同时给所有在线端发推送;离线端下次打开可见。
  • 通知内不展示完整 IP(屏幕被旁人看到时 IP 属于敏感信息)。
  • 可静音(资料页提供),但消息本身不可关闭、不可删除 —— 安全类消息必须留在会话里。
  • 设备管理页不再重复做「新」标记(决策 D7)—— 登录提醒只由这 3 条消息承担。

用户给这个号发消息走哪条通道

  • 用户发出的消息进入系统后台的接收入口(客服后台);
  • 后台管理员可选择是否回复 —— 回复时以「U8 Chat」官方账号的身份出现在这个会话里;
  • 不回复也可以,用户的消息就留在会话中。

这条通道属于聊天模块,不在本 PRD(设备管理)的实现范围内,此处只约定它与官方账号的关系。

6.9.2 新设备 24 小时安全限制 —— 本期不引入(已决策 D3)

Telegram 的这条规则:新登录的设备在 24 小时内不能终止其它会话(只有「新设备」被冻结,从旧设备操作不受限)。

U8 本期不引入。原因:U8 在有活跃设备时,登录验证码只发到已登录设备(不走短信),攻击者原本就难登进来;而这条规则会挡住「丢手机后用新设备立刻切断旧设备」这一刚需 —— 旧设备上有钱包,等不起 24 小时。

不引入带来的两个后果(开发与测试都需要知道):

  1. 新设备登录后立即可以注销其它设备上的会话(#E2 与 #E4 都正常可用)。
  2. 因此「注销失败」(#N09) 的原因里不包含任何"新设备不允许"这类业务限制;失败原因只剩网络异常、会话已失效等。

影响:被盗后的防护全部压在 6.9.1 的「新设备登录」通知 与 6.8 扫码确认授权 上,这两项不建议再砍。


6.10 状态与异常

状态页面规则
列表加载中—不做骨架屏:正常等待数据返回(已决策,见第九节)
列表加载失败—在设备列表页之上弹一个提示框「网络连接已中断」,不带按钮;不展示缓存数据。不存在独立的「检查网络」页
活跃会话为空#E1「此设备」卡片照常显示;「活跃会话」区一行「暂无其它活跃会话 / 你只在这台手机上登录着 U8Chat」;隐藏「注销所有其它设备」行。不单独出屏
扫码:不是设备登录二维码 / 已失效#N05取景框转红 + 震动 + 提示「该二维码不是设备登录二维码,或已失效。请在电脑上的 U8Chat(网页版 / 桌面端)重新获取登录二维码并扫描新二维码。」
扫码:二维码已被使用#N05提示「该二维码已被使用,请重新生成」
扫码:相机权限未开启#N06弹窗引导(不占整屏):第一次授权走系统原生弹窗;权限已被关闭时弹原稿那版应用内弹窗(「请允许访问」/「没有相机权限」/「不是现在」「设置」),从设置返回后自动重查权限。不提供「从相册选择」
注销成功#N08Toast + 列表移除
注销失败#N09红色 Toast + 保留原数据 + 可重试

七、规范

7.1 时间显示规则(必须全站统一)

时间差显示
< 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。必须回改。

7.2 设备名与平台标识

平台图标应用名称示例
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 三台设备的图标全是绿色同款,无法区分平台。必须按平台区分图标。

7.3 位置与 IP

  • 位置格式:列表页 / 详情页用 城市,国家(英文,与设计稿一致);面向用户的通知消息里用中文 城市, 国家(见 6.9.1)。
  • 位置为 IP 估算,每次展示都必须带免责说明。
  • IP 地址只在详情面板展示,且不在通知类文案中出现。

7.4 文案规范

  • 危险操作按钮用红色,且文案说明"注销/退出",不用"删除"。
  • 所有确认弹窗必须点名对象(哪台设备、几台设备)。
  • 所有确认弹窗必须说明后果(掉线、需重新登录、加密会话中断)。
  • 失败提示必须给下一步动作(重试 / 检查网络 / 改密码)。
  • 涉及"在哪台设备操作"的提示,一律写「电脑端」;需要举例时写「电脑端(网页版 / 桌面端)」。不要写死"网页版" —— 出二维码的设备可能是网页版,也可能是桌面端。
  • 官方账号的欢迎文案不要写死「只发这几类消息」 —— 本期只发 3 条是内部范围,不是对用户的承诺;用「账号安全相关的消息都会从这里发出,比如……」这类开放表述。

7.5 设备信息字段总表(一处看全)

字段构成与来源

字段含义 / 成分来源格式示例
设备名机型或浏览器名系统上报原样展示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:mm2026/09/11 09:12
最后活跃时间最近一次活动时刻服务端见 7.13 分钟之前
在线状态只有「此设备」有服务端固定显示「在线」(蓝色)在线

⚠️ 别把两个"平台"弄混:「应用与版本」里的平台是 U8Chat 这个 App 的(U8Chat macOS 12.6);「操作系统」是设备本身的(macOS 14.5)。两者不同,同时出现时不能只写一个。

三个展示位分别显示什么

展示位显示哪些字段版式
列表行(#E1 每台一行)设备名 · 应用与版本 · 位置 + 最后活跃时间三行紧凑:设备名 / 应用与版本 / 位置 · 时间
详情面板(#E7 / #E8 / #N16)设备名(大号)· 在线状态或最后活跃 · 应用与版本 · 位置 · IP 地址 · 登录时间(活跃会话再加最后活跃时间)顶部图标 + 设备名,下面是信息卡逐行
通知消息(#N17)应用与版本 · 机型或浏览器 · 操作系统 合成一行,再加位置、时间见 6.9.1

各字段的展示约束

  • IP 地址:只在详情面板出现,列表行与通知消息里都不出现(旁人看到屏幕时 IP 属于敏感信息)。
  • 位置:每次展示都必须带免责说明「该位置根据 IP 地址估算,可能并不准确」。
  • 设备图标:按平台区分(手机 / 笔记本 / 浏览器),不能所有设备用同一个图标。

八、跨端行为约定

场景各端表现
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点击安全通知的「前往设备管理」—

十、验收标准

功能

  1. 列表能正确区分「此设备」与「活跃会话」,此设备不可被自己注销。
  2. 单台注销后:该设备从列表消失,Toast 正确显示设备名,被注销端立即退出登录。
  3. 列表左滑某台活跃会话 → 点「注销」→ 确认弹窗点名该设备 → 完成后该行移除 + Toast。
  4. 「注销所有其它设备」在活跃会话为空时自动隐藏。
  5. 自动终止旧会话:5 个选项可选,当前值高亮,选择后回填 + Toast。
  6. 扫码登录完整闭环:相机 → 扫到码 → 确认页展示正确的设备名与系统 / 浏览器(不展示位置 / IP 地址 / 请求时间)→ 确认 → 电脑端登录成功 → 手机端列表新增 + Toast。

    (点「添加设备」应直接进相机,不再有中间引导页。)

  7. 取消授权后二维码作废,电脑端提示重新生成。
  8. 扫码失败 4 种原因分别有对应文案;相机权限被拒时有引导。
  9. 列表加载失败时在列表页之上弹出「网络连接已中断」提示(不带按钮)且不展示缓存数据;加载中不做骨架屏。
  10. 新设备登录后所有在线端收到安全通知;账号下有活跃设备时,登录验证码通过官方账号「U8 Chat」会话送达(不走短信),没有活跃设备时才走短信。
  11. 「注销所有其它设备」确认后:其它设备在列表里一次全部消失,切空态;Toast 报数量(如「已注销其它 3 台设备」);红色行同步隐藏。不得只掉一台,也不得报单台设备名的文案(单台与全删是两条不同路径,反馈文案不同)。
  12. 主页点「编辑」进编辑态:其它设备每行出现红色减号,点减号进确认弹窗、确认后该台移除;没有全选 / 没有批量提交;「完成」退出编辑态。「活跃会话」为空时「编辑」入口隐藏。
  13. 从「设备列表」到「注销完成」≤ 3 步。
  14. 所有确认弹窗都点名了对象并说明了后果。
  15. 时间格式全站符合 7.1。
  16. 三端(iOS / Android / Web)的同类页面样式一致。

性能

  1. 设备列表首屏(骨架 → 数据)≤ 1.5 秒(正常网络)。
  2. 扫码识别到确认页出现 ≤ 1 秒。

十一、决策与待确认

11.1 已决策(产品已拍板,开发可直接依此执行)

#问题决策落地说明
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 也不这么做(它靠登录通知)。且新登录设备最后活跃时间是「刚刚」,本来就在最上面,标记信息量低。提醒统一由 6.9.1 新设备登录通知承担(见 6.2 排序规则)
D8设备列表的「空态 / 加载中 / 加载失败」要不要各自出屏?❌ 三屏都不出①空态:本机永远在,列表不会全空 —— 「此设备」卡片照常显示,只在「活跃会话」区显示一行提示、红线隐藏;②加载中:不做骨架屏;③加载失败:在列表页之上弹提示框「网络连接已中断」,不带按钮、也不存在独立的「检查网络」页。规则写进 6.2 与 6.10
D10相机权限未开启怎么处理?✅ 弹窗引导,且区分两种情况①第一次授权:进扫码页时系统弹原生授权弹窗;②权限已被关闭:在扫码页之上弹应用内弹窗(沿用 Figma 原稿文案:「请允许访问」/「没有相机权限」/「不是现在」「设置」),从设置返回后自动重查权限。#N06 由整屏改为弹窗;不提供「从相册选择」

11.2 待确认(不阻塞本期开发)

#问题建议影响范围
Q1「我的」页「设备」入口是否做异常红点?建议做,但可延后入口
Q2扫码后、电脑端确认前,新设备是否先以「等待确认」状态插入列表?建议不做,成功后再插入列表
Q3会话详情是否加「允许接收通知 / 允许发起资产操作」两个开关?不做 —— U8 特有设想,与 Telegram 的同类开关场景对不上详情
Q5「自动终止旧会话」是否提供「从不」?不建议提供设置
Q8被注销设备是实时踢出还是下次请求才发现?实时踢 + 兜底跨端
Q10电脑端二维码页(含引导文案)由谁出稿、是否与本期同期?若不同期,需定手机端在这段时间的替代提示扫码链路

十二、附录

12.1 页面清单与线框图索引(共 20 屏)

性质屏线框图锚点Figma
已有设计稿我的-设备(主页)index.html#E1633:23747
已有设计稿注销会话提示弹窗#E2633:23862
已有设计稿左滑注销单台会话(原「编辑-确定注销」,编辑态外壳去掉)#E4633:24117
已有设计稿添加设备扫码#E5633:24240
已有设计稿自动终止旧会话#E6633:24260
已有设计稿查看此设备信息#E7633:24386
已有设计稿查看活跃会话设备信息#E8633:24528
已有设计稿活跃会话注销确认#E9633:24672
已有设计稿我的-设备-编辑(逐个删,见 6.5)#E3633: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 的规则。

12.2 主流程演示顺序

设备列表 #E1 → 扫码 #E5 → 确认授权 #N02 → 添加成功 #N04 → 会话详情 #E8 → 注销确认 #E9 → 注销成功 #N08 → 自动终止设置 #E6 → 回到 设备列表 #E1

另一条路径(除本机外全删):设备列表 #E1 → 点「注销所有其它设备上的会话」红色行 → 确认弹窗 #E2 → 全删成功反馈 #N19(一次清空 + Toast 报数量)。

在 index.html 中点「▶ 走一遍主流程」可自动播放第一条顺序;第二条路径可在主页点那条红色行手动走一遍。

12.3 与设计稿的差异汇总(需回改设计稿)

  1. 删除 Sheet 里的残留文案「预览兑换」(#E7 #E8 对应稿)。
  2. 修正 #E8 对应稿的占位数据(应用名、位置、时间)。
  3. 统一底部说明文案为「U8Chat 官方应用可用于 iPhone、iPad、Android、macOS、Windows。」(不含 Linux)。
  4. 扫码页副标题改为「对准电脑屏幕上的二维码,请勿扫描他人发来的二维码」(正向引导 + 安全提示);原「该功能仅支持设备登录二维码」下沉为识别失败时的错误文案。
  5. 扫码页去掉手电筒,且不加「相册」入口 —— 设备登录码只可能出现在电脑屏幕上,补光/相册场景不存在。
  6. 统一时间格式(见 7.1)。
  7. 编辑态改为「逐个删」:633:23990 保留,但去掉批量元素(不要「已选 N 项」、不要全选、不要底部操作条);633:24117 保留左滑、去掉编辑态外壳;主页 633:23747 右上角「编辑」入口保留(活跃会话为空时隐藏)。
  8. 确认弹窗点名设备 + 补后果说明。
  9. 自动终止弹层高亮当前值。
  10. 设备图标按平台区分。
  11. 删除重复稿(iOS 2.0 画板与「设备管理」画布两份完全相同的 9 屏)。
  12. 「自动终止旧会话」选项补「1 年」(Telegram 有),并给当前选中值打勾。
  13. 电脑端二维码页补三条引导(操作指向 / 5 分钟有效期 / 请勿转发),见 6.8.1 —— 手机端已不做引导说明页(决策 D6)。