#1261·whatsmeow

通过 iOS 共享扩展发送的 PDO 占位符重新发送请求的媒体从未得到响应

作者: Flonkes创建于 2026年9月7日更新于 2026年9月8日
标签can't reproduce

描述 当通过 iOS WhatsApp 共享扩展向联系人发送媒体消息(图像)时(即从照片应用或其他应用中直接将照片共享到 WhatsApp 聊天中,而不打开主 WhatsApp 应用),该出发消息的本地设备回声在连接设备上始终无法解密。库正确地检测到此情况,并向主电话发送 PDO 置换重发请求(BuildUnavailableMessageRequest / PDO / PLACEHOLDER_MESSAGE_RESEND),但电话从未响应,消息永远无法解密 — — 即使几分钟后也不会有解决的事件。收件人通过 WhatsApp 正常地直接接收图像(交付/阅读回执证实了这一点) — — 只有连接设备的本地副本受到影响。 重现 设置一个连接设备,其中包含基于 whatsmeow 的客户端(我们的情况下是 mautrix-whatsapp,但可能使用任何具有 AutomaticMessageRerequestFromPhone 启用的 whatsmeow 客户端即可重现)。在 iOS 主设备上,使用系统共享表格直接将图像(或其他应用,例如 Immich)共享到 WhatsApp 聊天中 — — 不要打开 WhatsApp 应用本身。在连接设备上:对本身的发出消息触发了 UndecryptableMessage 事件(IsFromMe: true,Type: media),库向电话请求重发(Requested message ... from phone),但从未收到任何解决的消息 — — 通过等待数分钟而没有结果来确认了这一点。控制测试:从 WhatsApp 应用内直接发送相同的图像(应用打开,在前台,没有共享扩展)每次都正确工作 — — 连接设备接收并解密回声无问题,根本没有未解密的事件。 我们在同一天通过多个独立的测试消息(不同的消息 ID,同一聊天)重现了此问题,始终通过共享扩展,始终未解决;基于应用的控制测试每次都解决了。 预期行为 要么:PDO 重发请求最终成功,即使是在共享扩展上下文中启动(例如,通过更长的超时/重试,因为共享扩展本身是短暂的,但 WhatsApp 的主应用进程可能仍然可以通过推送/后台唤醒访问),或者 如果这是固有的协议/操作系统限制(共享扩展进程很可能在 iOS 杀死之前就无法服务于来自电话到连接设备的 PDO 请求),那么文档此限制并/或使库更加优雅地放弃或明确标记为未解决,而不是无限期地保持 UndecryptableMessage 状态而不再发出任何信号。 日志 DBG <message from="210861520076879@lid" id="4A0FCDD240B6734E2F24" notify="..." peer_recipient_pn="..." recipient="144336821993485@lid" type="media"><unavailable/></message> component=whatsmeow sublogger=Recv WRN Unavailable message 4A0FCDD240B6734E2F24 from 210861520076879@lid in 144336821993485@lid (type: "") component=whatsmeow DBG Stored message secret key for outgoing …

内容来源: tulir/whatsmeow