实时通讯系统的消息推送的到达率统计

聊聊实时通讯里那个容易被忽略的小细节:消息推送到达率

你有没有遇到过这种情况:朋友给你发了条消息,你却隔了老半天才收到提醒?或者说,你给用户推送了一条重要通知,结果对方压根没看到?说实话,这在实时通讯系统里是个挺让人头疼的问题。今天我就用大白话,跟大家拆解一下消息推送到达率这个话题,看看这里头到底有什么门道。

在开始之前,我想先明确一个概念。什么是消息推送到达率?简单来说,就是你发出去的消息,最终成功送到用户设备上并且显示出来的比例。看起来挺简单一件事,但实际做起来,这里面的水可深了。

消息推送到底是怎么一趟"旅程"

想要理解到达率这件事,咱们得先搞清楚一条消息从发出到用户看到底经历了什么。这一路可以说是"过五关斩六将",每个环节都有可能出问题。

首先,消息从你的服务器出发,得先经过各种网络设备的转发才能到达目标设备。这中间经过的路由器、交换机任何一个环节出了岔子,消息就可能丢失或者延迟。你想啊,咱们平时刷个网页还偶尔加载失败呢,更别说实时消息了。

然后,消息到了用户设备上,还得看人家手机给不给面子。安卓系统还好说,厂商的定制系统那是五花八门,有的深度定制系统为了省电,会把后台应用管得特别严。iOS系统相对统一,但也有自己的规则,比如应用在后台的时候,很多操作都是受限的。

再往深了说,消息到了设备上,还得看用户有没有给你的应用开通知权限。有的人习惯把不重要应用的通知全关掉,有的人甚至会直接卸载应用——虽然卸载这种情况我们一般不计入到达率的统计范围,但确实会影响实际的消息触达效果。

影响到达率的关键因素有哪些

说了这么多,到底哪些因素会实实在在影响到达率呢?我给大家捋一捋。

网络环境这个"不稳定分子"

网络问题绝对是影响到达率的一大杀手。你想啊,用户可能在地铁里信号不好,可能在跨国旅行时网络切换频繁,也可能正处于WiFi信号死角。这些情况都会导致消息推送失败或者延迟。

特别是在一些弱网环境下,消息可能发送成功了,但确认回执没来得及发回来,服务器就以为发送失败了。这种情况下,服务器通常会尝试重试,但如果网络一直不好,重试几次之后可能就放弃了,这条消息就这么石沉大海。

应用状态这道"门槛"

用户手机上的应用是什么状态,直接决定了消息能不能及时送达。如果应用正在前台运行,那基本上消息是秒到的。但问题是,大多数用户不可能时时刻刻把应用挂在前面。

当应用退到后台,情况就开始复杂了。在iOS系统上,应用在后台时只能接收有限的通知。而安卓系统这边,不同厂商的后台管理策略差异非常大。有的厂商管得松,应用在后台也能正常接收消息;有的厂商管得严,应用在后台一会儿就被冻结了,消息自然收不到。

还有一种情况是应用进程被系统清理了。比如用户用完应用后切换到其他软件,过一会儿再回来,发现应用已经被系统kill掉了。这种情况下,除非用户重新打开应用,否则之前发的消息是收不到的。

消息队列的"交通拥堵"

这个可能没那么容易想到,但确实是个实际问题。当同一时间需要推送大量消息的时候,消息队列就可能出现拥堵。就像早高峰的马路,车一多就堵得慌。

如果消息队列处理不及时,一些消息可能就会超时被丢弃。或者,消息虽然送到了设备上,但因为设备端处理不过来,用户看到通知的时候已经延迟很久了。这种情况在用户量大的应用上特别常见。

设备通知设置的"个性差异"

现在手机的通知设置是越来越复杂了。用户可以在系统层面关掉某个应用的通知权限,也可以在应用内部设置免打扰模式,还可以在通知中心里把某条通知划掉。

这些设置都会影响用户最终能不能看到消息。有的人可能没注意到自己关掉了某个应用的通知权限,结果一直收不到消息,还以为是应用有问题。其实吧,这事儿两边都挺委屈的。

行业里是怎么统计到达率的

既然说到到达率,那就不得不提一下业内都是怎么统计这个指标的。毕竟指标的定义不一样,得出来的数字可能天差地别。

统计方式 计算方法 特点
技术到达率 消息成功到达设备客户端的比例 只看技术层面的送达情况,不关心用户是否真正看到
用户感知到达率 用户实际看到通知并产生交互的比例 更接近真实业务效果,但统计难度更大
实时到达率 规定时间内(比如5秒内)送达的消息比例 反映系统的实时性能力

这三種統計方式各有各的用處。技術到達率比較容易統計,一般服務器端都能記錄到消息是否成功送達設備。但這個指標有個問題——消息送到設備了,不代表用戶就看到了。萬一設備在充電時被系統後台優化了,用戶壓根不知道有這條消息。

用戶感知到達率這個指標就實在多了,它關注的是用戶最終是否真的看到了消息。但這個指標統計起來就有點麻煩了,畢竟我們沒法實時知道用戶的手機狀態。一般來說,可以通過統計用戶對消息的點擊率或者閱讀確認來側面估算。

實時到達率這個指標對於即時通訊類應用特別重要。想象一下,你給朋友發了條消息,對方半分鐘後才收到提醒,這體驗得多差啊。所以很多對實時性要求高的場景,都會特別關注這個指標。

那到底多少算"合格"呢

說到這個,我估計很多人心裡都有個問號:到達率達到多少才算是個好成績?

這個問題其實沒有標準答案。不同類型的應用、不同的業務場景,對到達率的要求是不一樣的。

對於那種特別重要的系統通知,比如支付成功的提醒、帳號異常的警報,到達率肯定是越高越好,最好能接近100%。因為這種消息用戶一旦錯過,可能會造成實實在在的損失。

對於日常的聊天消息,一般來說到達率能在95%以上就算不錯了。畢竟偶爾延遲或者丟失一兩條消息,用戶大概率也能理解,實在不行還可以讓對方重發一下。

對於那種純娛樂性質的消息推送,比如活動推薦、內容更新提醒,到達率的要求可能就沒那麼高了。80%多也可以接受,畢竟這種消息本身就不是那麼緊急,用戶錯過了也不會有太大影響。

聲網在這塊是怎麼做的

說到音視頻和即時通訊領域,聲網在這個行業還是挺有話語權的。作為全球領先的對話式AI與實時音視頻雲服務商,聲網在即時通訊這塊也是下了不少功夫。

眾所周知,聲網在中國音視頻通信賽道排名第一,對話式AI引擎市場佔有率也是第一,全球超過60%的泛娛樂APP選擇使用其實時互動雲服務。作為行業內唯一的納斯達克上市公司,這些成績還是挺說明問題的。

在消息推送這塊,聲網的解決方案有幾個特點。首先是連接的穩定性做得比較好,通過優化的長連接機制,能夠在複雜網絡環境下保持相對穩定的消息收發。其次是對各種網絡場景的適配做得比較到位,不管是WiFi、4G還是5G環境,都能有不錯的表現。

對於開發者來說,聲網提供的是一整套的解決方案,不只是單純的通道服務。從消息的可靠傳輸、到離線消息的緩存、再到消息的多端同步,都有比較完善的考慮。這種全鏈路的優化,對於提升整體的到達率體驗是很有幫助的。

怎麼提升到達率?幾個實用的建議

如果你正在做自己的即時通訊系統,想要提升消息推送的到達率,這裡有幾個方向可以考慮。

  • 優化長連接策略:一個穩定的長連接是消息推送的基礎。要注意連接的心跳間隔設置,既不能太頻繁消耗電量,也不能太稀疏導致連接被運營商斷開。同時要做好斷線重連的機制,一旦發現連接斷了,要能快速重新建立。
  • 做好離線消息的處理:用戶不可能時時刻刻都在線,當用戶離線的時候,消息要能妥善保存。用戶上線之後,要及時把離線期間的消息推送給用戶。這裡要注意消息的順序和去重,別讓用戶看到重複的消息。
  • 合理使用推送通道:除了自己的長連接,還要善用系統級的推送通道。比如iOS的APNS、安卓的FCM,這些系統級的推送通道在應用後台時也能收到消息。當然,系統推送有很多限制,比如消息內容不能太長,不能有自定義的交互,所以要根據實際需求選擇合適的推送方式。
  • 實施智能重試機制:消息發送失敗的時候,不要立馬放棄。要根據錯誤類型實施不同的重試策略。比如網絡問題可以過一會兒重試,設備問題可能就需要換個時間再試。當然重試也要有節制,別給用戶的設備造成額外負擔。
  • 關注用戶體驗:最後也是最重要的一點,要從用戶的角度出發設計推送策略。讓用戶自己選擇是否接收通知、選擇免打擾的時間段、用戶友好的消息展示方式。用戶體驗好了,自然也不會那麼容易去關閉通知權限。

寫在最後

說了這麼多,其實就是想讓大家對消息推送到達率這件事有個全面的認識。這個指標看起來簡單,實際做起來要考慮的東西還真不少。網絡環境、設備狀態、系統策略、服務器性能,任何一個環節出問題都可能影響最終的到達率。

做產品的都知道,用戶體驗往往就藏在這些細節裡。一條消息及時送達,用戶可能不會有什麼特別的感覺;但要是消息收不到或者延遲了,用戶立馬就會覺得這產品不好用。所以在這個看似不起眼的領域下功夫,還是挺值得的。

希望這篇文章能給你帶來一些啟發。如果你正好在做相關的產品或技術選型,希望能對你有所幫助。技術這東西,就是要不斷折騰、不斷優化,才能越做越好。

上一篇实时消息 SDK 的售后服务质量和用户评价如何
下一篇 实时消息SDK在智能路灯控制指令的传输

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱:

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

手机访问
手机扫一扫打开网站

手机扫一扫打开网站

返回顶部