You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向iOS和watchOS推送通知时出现重复通知问题

iOS & watchOS 推送通知重复问题排查方案

可能的原因及对应解决方法

1. APNs ID 字段映射错误

你设置了notification.id = id,但@parse/node-apn库中,正确对应APNs的apns-id头的字段是apnsId,而非id。如果字段名错误,两条通知会被识别为不同的通知,导致无法合并。

修正代码:
把notification.id = id;替换为:

notification.apnsId = id;

2. watchOS 的 Topic 配置错误

推送通知应该发送给watchOS的扩展目标,对应的topic应该是[app bundle ID].watchkitextension,而非.watchkitapp。如果topic不正确,系统会将推送给watch的通知视为独立于iOS的通知,无法触发合并逻辑。

修正设备数组:

let devices = [
    {"token": "[iOS push token]", "topic": "[app bundle ID]"},
    {"token": "[watchOS push token]", "topic": "[app bundle ID].watchkitextension"}
];

3. 推送时间间隔超出合并窗口

苹果的通知合并机制有时间窗口限制,如果两条推送的发送间隔过长,系统可能不会将它们视为同一条通知进行合并。确保两条推送的发送时间尽可能接近,避免因await循环导致的不必要延迟。

优化发送逻辑:
可以并行发送两条推送,减少时间差:

(async () => {
    await Promise.all(devices.map(d => push(d)));
})()

4. 测试环境问题

模拟器对推送通知的合并支持可能存在bug,建议使用iOS和watchOS真机进行测试,确保符合真实设备的行为逻辑。

5. 额外字段不一致

检查通知的其他字段(如threadId、category等)是否完全一致,如果存在差异,系统也可能不会合并通知。确保两条通知的所有核心字段(body、pushType、apnsId等)完全相同。


内容的提问来源于stack exchange,提问作者JBYoshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 11:03:25