K8.06.1cross-device notification duplication设计
同一事件不应在所有设备重复提醒
别名: 通知镜像 · 重复通知 · notification mirroring · 多设备同时响
概念解释
一条 iMessage 进来,手表振动、手机响、电脑右上角再弹出同一句话——同一事件被复制成三次中断。跨设备通知去重要保证一件事只打扰一次,而不是在每台已登录的设备上各演一遍。系统把通知镜像到 Mac 是为了人在电脑前也能看见,镜像若等于每台都出声,镜像就成了放大器。这条管的是到达那一瞬间有几路提醒,不是点过之后角标清不清,也不是「正在用哪台」怎么选路。
机制
每台设备都向同一套推送通道注册,默认行为是每台各投递一次。对系统来说这是可靠投递:任意一台不在线,另一台还能响。对人来说这是把一次事件乘以设备数。声音、横幅、振动是三种中断通道,三台设备同时用,中断被平方。人无法把「我已经在看其中一块屏」反馈给尚未响的那几台,于是房间里会接连响几秒。产品若把「通知镜像」做成无条件转发,等于放弃在投递层做去重,把过滤留给用户去关各端开关——那是在用设置页修补默认错误。去重的对象是事件标识,不是文案相似:两封不同的邮件可以都响,同一封邮件的推送和本地横幅不能叠。
边界
设备不在同一空间时(手机在身上、电脑在办公室),重复投递是备份而不是噪音,去重会让人漏掉不在身边的那台。闹钟、计时器、来电这些以「必须在某一台被接到」为成功条件的事件,允许在多台同时响,直到其中一台接起。公共或共享设备不应接收私人通知的镜像,去重之前先不该投递。仅静默写入通知中心、不出声不出横幅的副本,不算重复打扰,可以保留供事后翻找。
怎么落地
- 为每条通知设跨设备事件标识,在短时间窗口内只允许一路出声或振动;其他端最多写入无声的通知中心。
- 默认不要把手机的横幅原样再弹到所有已登录电脑上;镜像是「人正在那台电脑前才弹」,不是「凡是登录就弹」。
- 提供一次关闭「其他设备上的声音」而不关闭该设备通知中心记录的开关,避免用户为了安静把整类通知关掉。
- 验证:同一 Apple ID 下手机、手表、电脑都醒着,发一条测试消息。统计出声和振动的路数,应不超过一路;允许另外两端出现无声记录。再把电脑盖上、手机放远,确认至少有一路仍然出声,以免去重变成全灭。