如何打造实时性的弹窗?

本文介绍了如何优化Android弹窗SDK的实时性,通过线程方案的演进,从共用埋点数据采集线程到拆分线程,再到抽离数据加载线程,确保在网络请求不影响弹窗判断的同时,降低了延迟并保证了业务需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 前言

在 App 的运营活动中,对用户进行弹窗提示,是一种常见的运营方式。例如:用户已经下单但未付款的时候,可以给用户一个优惠券的弹窗提示。

神策 Android 弹窗 SDK[1] 主要针对的就是上述运营场景,运营人员可以在神策智能运营中配置弹窗的 UI 以及触发弹窗的一些条件,当用户满足配置的条件时,集成了弹窗 SDK 的 App 会展示弹窗。UI 效果如图 1-1 所示:

 

图 1-1 弹窗 UI 效果图

2. 弹窗的实时性

在很多场景下,弹窗需要很高的实时性。如果弹窗的计算规则通过后端处理,符合条件时再下发给客户端,实时性将得不到保障。

为了解决这一问题,把计算逻辑等放在了客户端。简单来说,就是触发埋点事件之后会判断是否触发弹窗。

此外,弹窗 SDK 为了保证实时性,也做了很多工作,下面就逐一为大家进行介绍。

3. 方案演进

3.1. 方案一:共用埋点数据采集线程

触发弹窗的时机,取决于运营同学在神策智能运营中的配置,那弹窗 SDK 如何来决定是否弹窗呢?

举个例子,运营同学的配置条件是:有商品页面的浏览数据就弹窗。因此,在 App 端监控到有商品页面浏览的埋点数据产生就会弹窗。

埋点数据采集任务是在埋点数据采集线程中执行的。因此,最初的想法是在埋点数据采集线程中监控埋点数据,如果有符合弹窗条件的数据,那么就展示弹窗。示例代码如下:

//判断是否弹窗

PlanManager.ensureShowDialog(data);

//数据缓存到数据库

enqueueEventMessage(data);

这种做法很简单,也能满足需求。它的优点如下:

  1. 从代码上来看,逻辑比较清晰;
  2. 判断是否弹窗和埋点数据采集都是在一个线程,方便维护。

但是,它的缺点也很明显:

  1. 如果在判断是否弹窗这一步,有阻塞或者异常,那么会影响埋点数据缓存到数据库;
  2. 耦合度非常高。现在是弹窗的业务需要监控数据,如果将来其他业务也需要监控数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值