iPhone 推送通知延迟,这种情况出现在只连接 WIFI 的情况下。

2021-09-24 20:28:45 +08:00
 veSir
在贴吧有看到有人把宽带 IP 改成公网 IP 就解决了,原因是内网 IP 会 NAT 超时,手机如果一段时间没有网络活动上级网关就会断开、导致 TCP 长连接无法持续连接.

我自己在 OpenWRT 查看实时连接貌似确实是这样,iPhone 一段时间没有网络活动 APNs 的 5223 端口就会断开,再次连上需要几分钟时间、5223 端口连上后还要等一两分钟才有通知提醒.
9899 次点击
所在节点    iPhone
27 条回复
xfangs
2021-09-26 21:00:55 +08:00
@veSir 感谢
xfangs
2021-09-27 23:53:17 +08:00
我测试了一下,发现我在路由器(openwrt)把开启的 Turbo ACC 关闭就会好很多,消息推送几乎没有延迟了。
对我来说问题应该出在硬件 NAT 、BBR 、全锥形 NAT 这几个选项中,还没测出来究竟是哪个影响的,但是貌似关了对网速的影响也不是特别大。
veSir
2021-09-29 03:35:42 +08:00
@xfangs 恭喜没通知没有延迟!
Turbo ACC 这个开、关我都有试过都会延迟,只有连接 WiFi 的同时开启蜂窝才不会延迟,手机在使用的时候通知都会延迟😂
flow 可以增加转发速度貌似和连接 apple 推送通知服务器没什么关系。
BBR 提升 TCP 性能、刚好推送通知就是 TCP 连接,不知道这个有没有关系。
FullCone-NAT 是 UDP 打洞的貌似也没关系。
xfangs
2021-09-29 16:11:01 +08:00
@veSir 可能是硬件 NAT 的问题,我的固件流量分载驱动是用的开源的,可能是开源实现还不太完美。
我本来感觉这里好像也不应该有问题,但是看到网上有人说关闭硬件 nat 有效果,我就试了试,没想到真的起了作用
veSir
2021-09-29 23:03:26 +08:00
@xfangs 话说,flow 不是 NAT 加速的嘛,你怎么还变成减速了,你是用的 flow 还是 SFE 。
麻了,不知道是非公网 IP 的原因还是我硬件 NAT 效率不行的原因了.
delpo
2021-11-02 13:48:10 +08:00
我这里的移动宽带也是这样,经常收不到消息,要等到下一次心跳包发现超时了才行,我自己抓包了一下,APNS 的心跳好像是 10 分钟一次.
所以我就用 tg 机器人实现了一个自动刷新 nat 时间的 bot,用自己的 vps 搭一个 tg bot,每分钟向 iphone 上的 tg 发一条消息,就可以维持 apns 的连接.
我自己对 tg 的通知没有要求,所以直接把 tg 的通知关了.这也是很神奇的一点,设置中通知关了,抓包里还是会收到 apns 的数据,只是不会跳出通知,但是在 tg 里把某个联系人静音了,他发消息就不会有 apns 的数据,我用的是最新系统
veSir
2021-11-02 17:34:51 +08:00
@delpo 你使用 WiFi 时 把蜂窝也开着通知就不会延迟.
或者你用 ipv6 与 APNs 通信 通知也不会延迟.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/804005

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX