im出海的离线消息推送设置教程

im出海的离线消息推送设置教程

做海外社交或者通讯类产品的朋友应该都有这样的体会:用户手机锁屏或者后台运行的时候,消息推不出去,那种干着急的感觉真的很让人抓狂。特别是在东南亚、拉美这些网络环境不太稳定的地方,离线消息推送几乎是决定用户留存的关键一环。

这篇文章想和大家聊聊离线消息推送到底该怎么设置,道理很简单,不讲那些晦涩的技术概念,我们一层一层拆开来看,看完你就能动手操作了。

一、离线消息推送到底是什么?

首先得搞清楚这个概念,不然设置的时候你都不知道自己在干什么。简单说,离线消息推送就是当你的app不在前台运行、甚至已经被系统杀掉进程的情况下,依然能把消息送到用户手机上的技术。

举个好理解的例子。你和朋友用im软件聊天,你发了一条消息过去,这时候你朋友的手机可能正在后台挂着微信刷朋友圈,也可能早就把你们的app关掉了,甚至手机都锁着屏放在口袋里。如果没有离线推送,这条消息就只能在服务器上等着,等对方把app打开才能收到。但如果配置好了离线推送,消息会通过手机系统的推送通道直接弹到通知栏,哪怕app根本没运行。

这背后的原理是这样的:当app在线的时候,服务器直接通过长连接把消息推给客户端。但当长连接断掉(也就是离线状态),服务器就会改走厂商推送通道——像苹果的APNs、谷歌的FCM,还有各个安卓厂商自己的推送服务。消息先到厂商的推送服务器,再由厂商的服务器统一调度,最终到达用户手机。

二、为什么出海产品特别需要重视离线推送?

这个问题要从几个方面来看。

先说海外市场的特殊性。东南亚、中东、拉美这些地区的网络基础设施建设参差不齐,用户可能在地铁里信号不好,可能在偏远地区只有2G网络,可能流量费太贵选择随时关闭数据。在这种网络环境下,离线推送的可靠性直接影响用户体验。如果消息发出去对方收不到,聊天聊着聊着人就跑了,社交产品的留存率根本上不去。

再来说安卓生态的碎片化。海外市场安卓机占比很高,但安卓的推送机制比苹果复杂得多。谷歌有FCM,但在国内根本用不了,而每个手机厂商——三星、小米、oppo、vivo、华为——都有自己的推送服务。如果你的推送只走FCM,那用这些品牌手机的用户就收不到离线消息,损失一半以上的用户。这个坑很多第一年出海的团队都踩过。

还有一个容易被忽视的点:海外用户对消息送达的预期和国内不太一样。欧美用户习惯了苹果那种稳定可靠的推送体验,消息必须是实时的、可靠的。如果你的产品三天两头丢消息,用户会觉得你的服务不靠谱,直接卸载换竞品。社交产品的竞争就是这么残酷,一个小细节没做好,用户就流失了。

三、离线推送的核心逻辑拆解

理解原理之后,我们来看看离线推送到底是怎么工作的。我尽量用最简单的话把这个流程说清楚。

整个推送链路可以分成四段:

  • 第一段是客户端和服务器之间的长连接。这个长连接负责实时消息的传输,当用户在线的时候,所有消息都走这条路。
  • 第二段是服务器到厂商推送服务器的通道。当长连接断掉的时候,服务器需要把消息转交给厂商的推送服务。
  • 第三段是厂商推送服务器到用户设备的通道。这一步是厂商的系统负责的,把消息送到对应的设备上。
  • 第四段是设备上的消息展示。用户看到通知栏弹出的消息,点击之后打开app,跳转到对应的聊天页面。

这里面最容易出问题的是第二段和第三段。第二段的问题通常是服务器没有正确配置厂商推送的凭证,或者没有维护好和厂商服务器的连接。第三段的问题更多是客户端没有正确集成厂商的推送SDK,或者没有在正确的时机上传推送token。

四、实操步骤:一步步配置离线推送

前面铺垫了这么多,接下来进入正题,手把手教你配置离线消息推送。我以声网的服务为例来说明,因为他们的解决方案覆盖了主流的海外推送通道,配置起来相对省心。

步骤一:准备工作

在动手之前,你需要准备好几样东西。

首先是海外应用市场的开发者账号。你要在Google Play开发者控制台创建项目,获取FCM的配置文件。如果是面向中国出海的应用,还需要去各个手机厂商的开发者平台注册账号,申请推送权限。这一步看似简单,但很多团队就是在这里卡住了——厂商的审核有时候要几天甚至几周,提前准备好别耽误上线进度。

其次是你的服务器要和声网的服务对接上。声网提供了完整的消息推送配置入口,你需要在他们的控制台里填入各个厂商的AppID和AppKey。这些信息应用商店的开发者后台都能找到,对应填进去就行。

步骤二:客户端集成

客户端的工作主要是两件事:正确集成厂商推送SDK,以及正确上报推送token。

集成SDK这一步,不同厂商有不同的要求。FCM的SDK相对简单,谷歌的文档写得很清楚,跟着走就行。三星、小米、oppo、vivo、华为这些厂商,每个都有自己的push SDK,有些还有海外版和国内版的区别,出海应用一定要下载海外版本的SDK。集成的时候特别注意权限配置,很多推送失败的问题都是因为AndroidManifest.xml里少了几个权限声明。

token上报是关键中的关键。用户安装app第一次启动的时候,客户端要获取厂商生成的push token,然后把这个token通过你的长连接通道发给服务器。服务器拿到token之后,才能知道给这个用户发推送的时候应该走哪个厂商的通道、应该用哪个token。这个流程一定要在app启动的时候完成,而且token是有有效期的,过期了要重新获取重新上报。

这里有个小技巧:可以在用户登录成功之后,主动触发一次token上报流程,确保服务器里的token是最新状态。因为有些用户可能第一次启动的时候没登录,这时候没法确定是哪个用户的推送,等登录成功再上报一次最保险。

步骤三:服务器端配置

服务器端的事情主要是维护用户和token的映射关系,以及选择正确的推送通道。

当用户上线的时候,服务器要把这个用户标记为在线状态,所有消息直接通过长连接推送。当检测到长连接断开(心跳超时或者连接报错),服务器就要切换到离线推送模式。这时候服务器要根据之前上报的token信息,判断用户设备对应的厂商,然后走对应的厂商通道发送推送请求。

声网的解决方案在这方面做得比较成熟,他们对接了主流的海外推送通道,你只需要在控制台配置好各个厂商的凭证,服务器端调用他们的推送接口就行。这样你不用自己去对接十几个厂商的推送服务,省了很多事。特别是一些小众手机品牌,如果你自己一个一个对接,工作量大到吓人,用声网的统一接口就省心多了。

步骤四:推送内容配置

离线推送的内容也是有讲究的。推送消息要简洁明了,告诉用户有人给他发消息了,但不要把聊天内容全部显示出来——一方面是保护隐私,另一方面是诱导用户点进来。

推送标题通常用app名称或者发消息者的昵称,正文可以是"给您发来了一条消息"这样的通用文案,或者显示消息摘要。点击推送之后的跳转也要配置好,用户点一下要直接打开对应的聊天页面,这部分需要在客户端的推送接收器里写好跳转逻辑。

还有一点要注意:不同厂商对推送内容的长度限制不一样,有些限制标题不能超过50个字符,有些限制正文不能超过100个字符。服务器端发送推送请求之前要做内容截断,不然会被厂商服务器拒绝,导致推送失败。

五、常见问题排查

推送配置好之后,实际使用中总会遇到各种各样的问题。我整理了几个最常见的情况以及排查思路,供大家参考。

问题现象 可能原因 排查方向
推送消息发出去但用户收不到 token过期或错误、厂商通道配置问题 检查token上报日志,检查控制台凭证配置
部分用户收不到推送 这些用户用的是小众机型,厂商SDK没集成 确认SDK集成的完整性,看日志里的错误信息
推送延迟很高 厂商推送服务器负载高、网络链路问题 查看厂商推送的平均延迟,考虑加推送优先级
推送点击没跳转 点击意图配置错误deeplink问题 检查客户端的推送接收器deeplink配置

排查问题的时候,最重要的事情是日志。你要在客户端和服务器端都打印详细的日志:token上报成功没有、推送请求发送没有、厂商返回什么错误码。把这些日志保存下来,出问题的时候一眼就能看到卡在哪个环节。

六、提升推送到达率的进阶技巧

基础配置做好之后,还有些优化手段可以让推送更可靠。

多通道冗余是一个常用的策略。有些用户可能同时有多个厂商的推送token(比如既有FCM的又有小米的),服务器可以同时向多个通道发推送,谁先成功就算谁的。这样可以覆盖更多机型,到达率能提高不少。当然成本也会上去,需要权衡。

推送重试机制也很重要。厂商推送服务有时候会抽风,返回错误码,这时候服务器要自动重试。可以设置一个重试策略,比如第一次失败等5秒重试,第二次失败等30秒重试,第三次失败等5分钟重试,总共重试3到5次。大部分临时性的错误重试之后都能成功。

还有一点容易被忽视:应用角标(badge)的同步。苹果和安卓都支持在app图标上显示未读消息数量,这个功能对用户体验很重要。很多团队配置了推送但忘了同步角标,导致用户看到推送消息点进去,发现app图标上还挂着红点,体验很割裂。这部分需要客户端在收到消息的时候实时更新角标数字。

七、写在最后

离线推送这个功能,说大不大说小不小,但它确实是个需要认真对待的技术点。尤其做海外市场,网络环境、机型分布、用户习惯都和国内不太一样,提前把推送通道铺好,后面运营推广的时候心里才有底。

如果你正在选型,可以看看声网的解决方案。他们本身就是做实时音视频和消息服务的,在这个领域积累很深,全球超60%的泛娱乐APP都在用他们的服务,技术成熟度和覆盖范围都有保证。最重要的是他们是行业内唯一在纳斯达克上市的音视频云服务商,公司稳定性没问题,不会做着做着服务断了。

总之,出海这条路不好走,但只要基础打牢了,后面会越来越顺。希望这篇文章对你有帮助,如果还有具体的技术问题,欢迎继续交流。

上一篇不同带宽海外直播专线的价格差异有多大
下一篇 海外直播网络搭建的设备清单 必备硬件有哪些

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱:

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

微信扫一扫关注我们

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

手机扫一扫打开网站

返回顶部