触达率提升 20%,融云推送优化实践
不稳定的产品表现和不友好的使用体验,会让社交用户很快失去耐心。关注【融云全球互联网通信云】了解更多
去中心化社交产品 Damus 已经沦为互联网垃圾场。它在人们对去中心化的欢呼声中引爆,但也因违背用户常识和体验惯性的产品表现而很快失去吸引力,烟火般绚烂一瞬,成为留下讨论价值的实验性产品。
可见,由账户密码登录、关注取关等用户管理、信息流展示、推送通知等组成的社交产品形态已经非常深入人心,短期内难以被颠覆。更重要的是,不同于早期社交产品的先锋性尝试,如今人们几乎已经将大部分真实生活搬到了网上,自然对服务的稳定性和体验感有着极高要求。
而持续提升服务稳定性和体验友好度是融云作为专业选手的常规表现。
近期,融云针对 App 触达用户的主要手段推送进行了多重优化,使触达率提高了 20%,速度提升了 2 倍。
推送触达率提升
全平台推送通道优化
![](https://static001.geekbang.org/infoq/32/322e0b0ae3eb3aaf07cf13e2acef0a05.png)
融云推送服务覆盖 FCM、APNs 等系统通道,以及国内大多数手机厂商,比如小米、华为、OPPO、vivo、魅族、一加、Realme 等,实现了全平台的推送覆盖,保障了推送的成功率。
面对推送通道的复杂性,融云通过增强兼容性、设备型号和操作系统版本针对性优化、不同厂商通道优化三大手段进行推送通道的优化,以达成提升推送触达率的目标。
1. 增强兼容性
增强服务兼容性,遵循不同厂商的规范和标准,确保服务可以在各种设备上平稳运行。特别是对华为、小米、OPPO 等本土品牌的手机,融云均进行了针对性适配,以确保不会因兼容性问题,导致推送无法送达。
2. 根据设备型号和操作系统版本进行优化
不同的设备型号和操作系统版本对推送通道的支持程度不同,融云根据具体情况进行持续优化。
例如,在 Android 8.0 及以上版本支持通知渠道(Notification Channels),在 OPPO 手机推送时使用通知栏图标等。
3. 根据不同厂商优化推送通道
推送通道是指消息从服务器到达设备的途径,国外的设备通常有两种方式:苹果 APNs(Apple Push Notification service)与谷歌 FCM(Firebase Cloud Messaging)。
国内厂商众多,且不同厂商针对推送通道的可用性也存在差异。融云根据各厂商特点实行了针对性通道策略配置,例如,在华为手机上使用华为推送通道(HMS),在小米手机上优先使用小米推送通道(Mi Push)。另外,厂商会通过 QPS(Quantity Per Second)、一天连接的设备上限及每次推送的内容大小等对推送进行限制。
针对各厂商的差异化限制,融云在逐一详细研究后,实施了不同的优化策略。以小米和华为的推送优化过程为例——
小米推送分为“普通消息推送”和“通知消息推送”,默认为普通消息推送。2020 年 5 月 1 日起,小米推送对国内消息实施推送数量限制。为了使用没有限制的小米“通知消息”推送功能,在向小米平台申请后,将其提供的 channel_id 在服务管理 -> 应用标识 -> Android -> 小米推送设置中进行设置,提升了推送消息的成功率。
华为的推送分为“服务与通讯类推送”和“资讯营销类推送”,以前使用“服务与通讯类推送”时类型需要设置为重要消息,“资讯营销类推送”需要设置为一般消息,融云默认全部为重要消息。
华为从 2021 年 5 月底开始,对推送消息频次进行统一管理,对资讯营销类消息进行频次限制。默认根据消息内容来区分消息推送属于什么类别,开发者可通过内容模板申请内容属于什么类别,针对华为的调整,融云也有针对性地在开发者后台提供相应的配置。
针对各大厂商的 QPS 限制,特别是在全员推送等需要瞬时分发大量推送的场景下,融云的推送服务通过整体控速方案来应对,避免触发厂商的推送拦截策略。另外,融云也通过内部监控平台和相关机制,对各大平台的推送质量进行监控,若遇某一平台的失败率增高等情况,可及时调整推送策略,多管齐下提升推送成功率。
精准推送 & 推送点击上报
1. 支持标签推送
支持根据用户属性设置用户标签、进行标签分组,建立精准用户画像,让推送更精准,提升推送点击率、转化率及用户留存率。
融云在开发者后台提供了相关的标签管理能力,开发者可以调用接口灵活管理。
![](https://static001.geekbang.org/infoq/5c/5c4ae319a1c412d394655951f30455e9.png)
2. 提供自定义推送平台,优化推送内容
融云提供自定义推送平台,支持开发者根据用户的兴趣和需求,定制个性化推送内容,并在推送标题和摘要中突出重点,吸引用户点击。
同时,推送内容的实用性和发送时机也非常重要,需要在适当时间发送相关推送。
融云支持文本、富媒体、自定义消息等内容推送,满足各场景的推送运营需求,如:社交互动通知、交易状态同步通知、系统升级、帐号唤醒拉活通知、活动运营通知等。
![](https://static001.geekbang.org/infoq/a7/a7d292f796f33546bbe63771bc192298.png)
3. 推送多语言模板设置
针对全球化业务应用中用户的多国属性特点,在发送系统升级、运营活动类等通知时,需要给不同语言环境的用户推送不同内容。通过推送模板,可根据目标用户设置的语言环境,从推送模板中选择对应语言的内容进行远程推送,增强运营效果,提升用户使用体验。
消息延时推送补偿
在一些网络建设不怎么发达的地区,客户端常处于在线和断线的半连接状态。或者,即便在网络基建完善的地区,人们也常遇到走进电梯、短暂处于网络不佳状态的场景。
这些短暂断网情况,服务器很难及时精准获取,可能造成一些离线消息推送该发而未发。针对于此,融云通过消息延时推送补偿功能,提高了推送的触达率。流程如下图示:
![](https://static001.geekbang.org/infoq/a8/a861c67343b87293a2a0e5ef2daf6851.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
该方案的核心逻辑是:服务会根据客户端实际拉取消息的动作来判断客户是否真的在线,如果客户端没有正常拉取消息,服务器便会补偿该消息的离线推送。
推送体验优化
针对不同地区用户的使用习惯差异,融云完善了 Push 送达、在线送达、单条消息已读等功能,并引入 Notification Service Extension,提供更符合海外 iOS 端用户使用习惯的细腻服务。
Notification Service Extension 是一种用于处理远程通知的扩展,可以让应用在接收到远程通知时进行额外的处理。
它运行在一个单独的进程中,并且可以在没有启动应用的情况下接收和处理远程通知,用于执行各种任务,如下载附件、处理通知中的数据、拉取消息等等。这一功能的最常见应用场景是,当用户收到一条推送通知,点击进去后即使恰巧遇到进入电梯等情况,也不会因断网而无法查看该消息。
即,应用在接收到推送时立即从服务器拉取消息,而不需要等待应用启动。其具体流程如下图示:
![](https://static001.geekbang.org/infoq/4e/4ead01504a6de2f170a028e33da00768.png)
实现 Notification Service Extension 有三个前提:
App 需要与 APNs 进行交互,以便在接收到通知时进行处理。
App & Notification Service 共用一份消息数据库。
使用 MMWormhole 进行进程间通信,即 Notification Service 和 App 可以相互通知。
其中,使用 MMWormhole 跨进程通信,是为了避免 Notification Service 和 App 同时存在且都进行 IM 连接可能导致的 App 账号被踢现象——
当 App 启动,就通知 Notification Service 断开连接;当 Notification Service 启动则通知 App,App 若存活,则通知 Notification Service 断开连接。
以上进阶体验,开发者均可通过集成融云 IM SDK 获得,无需自行逐一对接多家手机品牌厂商,即可享受毫秒级触达目标用户的极致体验。
同时,融云还提供全平台的推送统计能力,支持查看各手机厂商平台推送数据情况,如推送的成功、失败、到达、点击,以便开发者掌握推送质量情况。
评论