V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Ldo
V2EX  ›  Apple

关于消息通知延迟的问题

  •  
  •   Ldo · 49 天前 · 3509 次点击
    这是一个创建于 49 天前的主题,其中的信息可能已经有所发展或是发生改变。

    bark 的通知几乎可以做到实时的,反而微信的通知偶尔出个延迟。

    这是苹果的问题,还是微信的问题?

    24 条回复    2025-05-02 09:12:48 +08:00
    arron2022
        1
    arron2022  
       49 天前
    借楼说个困惑,就是有时候微信通知锁屏页面通知了也看到了,然后点进去看要等一会才加载出来,这是为啥
    supercatdog
        2
    supercatdog  
       49 天前
    @arron2022 iOS 吗? 通知是苹果服务器发你的(当然也是微信服务器调 API 叫苹果发送的),打开微信 App 是和微信服务器连接后收消息。
    magic3584
        3
    magic3584  
       49 天前
    微信的吧,消息发出后后端需要做一些操作,然后才会通过苹果服务器去推送。
    supercatdog
        4
    supercatdog  
       49 天前   ❤️ 1
    @arron2022 大概就是:B 发送消息给 A ,微信服务器发现 A 不在线,那就叫苹果发送通知给 A 的设备。苹果能马上找到 A 的设备,A 设备会很快收到通知消息。但是此时 A 设备的微信 App 的数据库里是没有这条消息的。因为微信 app 没有在前台,没有连接微信的服务器,无法收发消息。等你打开微信 app 后,会先去连接微信的服务器,连接有个过程,连接完成后收消息也有个过程,然后才在 app 里显示消息。
    justOMG
        5
    justOMG  
       49 天前
    微信已经无感了,到现在我微信还会双重推送,关键还前后间隔几分钟
    zyxfsky
        6
    zyxfsky  
       49 天前
    我用 Bark 推送消息给手机、pad 、mac ,同一条消息,三个设备有时候几乎同一时间收到,有时候前后相差好几分钟,还有的时候部分设备收不到消息,不知道为啥
    luffy2u
        7
    luffy2u  
       49 天前
    苹果有时候还会有假微信通知,打开后没有新消息
    itskingname
        8
    itskingname  
       49 天前   ❤️ 1
    @arron2022

    这就是 ios 和 android 通知机制的不同之处。

    对于国产安卓来说,别人给你发一条微信消息。这条消息先到了你的手机上,然后安卓从消息里面拿到通知对应的内容,通知你。你点开通知,微信 app 直接加载刚才拿到的消息全文。

    对于 ios ,别人发一条微信消息给你的时候,微信服务器会先调用 ios 的通知接口,把通知对应的内容发给苹果。苹果再给你发送推送。你收到推送,点开微信以后,微信 app 再连上自己的服务器拉取消息全文。所以会出现延迟。
    arron2022
        9
    arron2022  
       49 天前
    @supercatdog #2 好的 感谢分析,对用户体验来说太糟糕了,一先一后还不如两个都同时后到。
    arron2022
        10
    arron2022  
       49 天前
    @itskingname #8 我觉得安卓这种才更合理,就算通知延迟了也无感知,但是 ios 这种特么先让你看到点进去又要等一会,特别是一些要紧要回复的消息这样太搞心态了。
    kera0a
        11
    kera0a  
       49 天前 via iPhone
    @itskingname 安卓是因为后台有一条微信的长链接,和通知无关。

    iOS 也可以携带消息全文,并且 iOS 还提供 API 让你在通知显示之前,执行 app 的代码,可以从服务器拉取额外信息。

    所以并不是因为通知差异导致的,根本原因是微信的长链接有没有建立。
    liudewa
        12
    liudewa  
       49 天前
    @itskingname #8 ios 怎么做到 vx 和手机一一对应的呢,就是调用 ios 通知 api,通知 api 怎么知道要通知的对象是谁
    supercatdog
        13
    supercatdog  
       49 天前   ❤️ 1
    @liudewa 有设备令牌(DeviceToken),微信调用苹果通知 API 时把这个令牌给苹果,苹果就能找到这个设备了。微信在请求通知权限的时候会获取到这个设备的令牌。
    supercatdog
        14
    supercatdog  
       49 天前
    @kera0a 哈哈,1 楼会有这个疑问,所以可能不太了解这块的,所以就没有说 socket 之类的或者去说建立长连接之后能双方互相找到对方消息无阻。微信进入后台一段时间后,sokect 会断开,无法继续收发消息,只能靠通知。iOS 确实能在通知里携带挺多信息,然后在通知拓展中去获取更多或者做更多逻辑,但是微信似乎并没有去做,至于取舍是啥不清楚。表现就是微信点开通知后不会跳到对应的聊天窗口,只是单纯打开 app 。安卓似乎点击通知能跳到对应的聊天窗口。
    huig
        15
    huig  
       49 天前
    @arron2022 iOS 才是正规操作,国外有 google 统一推送,国内 android 的统一推送联盟没搞起来。现在 android 就各种后台保活用来通知,不过目前系统级做了推送通知,有多个手机系统就得接多个,有的第三方统一帮你封装好了。不过目前就我所知微信没有接入的,而是各个手机系统做了白名单,塞了粒老鼠屎。
    somebody1
        16
    somebody1  
       49 天前
    安卓也一样,经常电脑都回复了,手机过一会才通知
    kyor0
        17
    kyor0  
       49 天前
    微信的,这个问题你手动刷新一下推送就能解决。如果你的是 wechat 那延迟是很正常。国内微信正常推送延迟应该是 5s 以内
    fangxisama
        18
    fangxisama  
       49 天前
    感觉是两方都有问题,看两个公司如何解决这件事情的。

    苹果对于消息延迟给出了 “即时通知” 的解决方案,好不好用暂不得知,至少可以尝试看看。但微信一直不跟进有什么办法,只能说微信不重视用户呗。
    nagisavpn
        19
    nagisavpn  
       49 天前 via iPhone
    @fangxisama 即时通知,这功能我到现在都没搞清楚,开不开都一样啊
    julyclyde
        20
    julyclyde  
       49 天前
    @itskingname 你的意思是,国产安卓不经过中心服务器转发就可以直接发到手机上吗?
    prosgtsr
        21
    prosgtsr  
       49 天前 via iPhone
    国产安卓是微信直接到手机
    ios 是微信到苹果,苹果到手机

    使用体验上来说国产安卓的好,但是方案上并不是国产安卓的方案好,这都是有代价的,代价就是微信一直在后台
    Vegetable
        22
    Vegetable  
       49 天前
    @arron2022 ios 的推送机制似乎也导致了,点击微信推送进入的是聊天列表页,但是 android 下是打开对话框。
    Rinndy
        23
    Rinndy  
       49 天前 via iPhone
    iOS 后台 app 刷新打开会好点,也有可能是微信垃圾。
    feelm
        24
    feelm  
       47 天前 via Android
    iOS 的这个机制更繁杂,容易出 bug 和问题。安卓体验更好,但更耗电。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1542 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:59 · PVG 07:59 · LAX 16:59 · JFK 19:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.