跨设备协作

跨设备剪贴板怎么设计才顺手:权限、冲突、历史和敏感内容

从浏览器剪贴板权限出发,设计电脑与手机之间的显式发送、接收确认、离线状态、同时编辑冲突、历史清理和敏感字段保护,并给出可执行的功能测试闭环。

把电脑上的一段地址送到手机,或者把手机里的验证码交给电脑,跨设备剪贴板比发一条聊天更直接。但“自动同步剪贴板”也是一个危险的承诺:系统剪贴板里可能刚复制过密码、恢复码、客户资料,网页不该在后台持续读取并广播。

顺手与安全并不冲突。关键是把它设计成用户明确推动的一次传递,同时把连接、队列、冲突和本地历史的状态说清楚。

浏览器为什么不能静默同步

Clipboard API 通常要求 HTTPS,并对读取施加权限或短暂用户激活限制。浏览器之间实现细节不同,页面在后台时限制更严格。写入也最好由接收方的点击触发,让用户知道什么内容进入了系统剪贴板。

因此,比“每秒轮询一次”更可靠的流程是:用户在 A 点击读取或粘贴到输入框,确认预览,再发送给 B;B 收到后显示内容类型和来源,用户选择复制。连接可信不等于内容自动可信。

剪贴板条目不是一条裸字符串

每条记录需要 ID、发送设备、创建时间、内容类型、字节大小和状态。正文通过加密的 P2P 通道发送;状态可以是待发送、已送达、已复制、已过期或已删除。纯文本是最稳定的基础,图片和富文本需要明确大小限制与降级策略。

不要把 HTML 富文本直接注入页面。预览时按文本显示或严格净化;链接只在用户点击时打开,并标明真实域名。超长文本先折叠,避免一个几 MB 的剪贴板条目拖慢聊天和控制消息。

设备离线时,队列该放在哪里

纯 P2P 模式下,对方离线就无法送达。发送方可以在本地保留短期待发送条目,设备恢复后询问是否继续,也可以直接标记未送达。若产品提供服务器暂存,那已经是另一种数据边界,需要说明加密方式、保存时间、容量和删除机制。

待发送队列与接收队列应分开。双方同时发送时,各自消息按 ID 去重,不用一个全局“最新值”互相覆盖。连接重建后交换已确认 ID,只重发未确认条目;用户删除或取消则同步终态,不能在下一次重连复活。

“最新一条”也会发生冲突

A 和 B 在断线期间都创建了一条内容,重连后不能简单比较本机时间戳,因为两台设备时钟可能不准。保留两条记录,按接收顺序展示来源,比选一个胜者更安全。若需要跨设备的有序历史,可用每设备单调序号加服务端或会话逻辑时钟。

历史默认只留在本地并设置上限,例如最近 20 条或 24 小时。密码样式、一次性验证码和包含私钥标记的内容可提示“敏感,短时自动清除”,但不要声称能准确识别所有秘密。用户应能一键清空当前设备,也能对单条立即删除。

文本、图片和文件不要混为一谈

一张截图可以作为剪贴板图片,也可以作为文件传输。小图适合快速预览和复制,大图应转入文件协议,使用分块、背压、续传和摘要。URL、电话号码、邮箱可以提供打开或拨号动作,但必须保留普通复制,不能替用户自动执行。

富文本跨系统容易丢格式。建议同时发送 text/plain 与经过限制的格式描述,接收端不支持时回退到纯文本。任何来自远端的 MIME 类型都只是声明,渲染前仍要验证实际数据。

敏感内容和埋点边界

剪贴板正文、长度精确值、哈希、预览和来源应用都不进入行为分析。足够有用的事件是:用户打开功能、发送类型、大小区间、送达结果、复制动作、过期或删除。报错日志也要避免把正文拼进异常消息。

共享电脑上,页面锁定、退出或解除设备信任时应清除可配置的本地历史。浏览器通知不展示完整正文,只说“收到一条剪贴板内容”,防止锁屏泄露。

每个闭环怎样测

测试 A 发文本、B 收到并复制;B 拒绝复制;双方同时发送;发送前断网;发送后确认丢失;重连去重;A 取消但取消消息延迟;超长文本;空文本;emoji 和多语言;HTML 脚本片段;小图与超限图片;页面刷新;历史过期;一键清除;通知内容。

还要在不同浏览器检查权限拒绝、后台标签页和不支持读取的情况。失败时提供手动粘贴输入框,而不是把功能整个锁死。uCopy 的 P2P 剪贴板以明确发送为核心:你决定哪一条离开设备,也决定哪一条进入系统剪贴板。

把方法变成一次真实连接

打开 uCopy,让两台设备在浏览器里安全连接并开始传输。

开始免费使用