一、前言
在 App 的使用中,常常会有一些功能的依赖,比如评论需要用户登录、支付需要用户实名绑定银行卡等。从代码开发角度而言,如果我们的项目使用了多模块,那么也就会出现模块依赖的场景,比如评论模块依赖登录模块提供的登录状态、支付模块依赖实名绑定模块提供的支付账户信息等。
针对多模块间通信,我们如何设计才能合理的满足当前的需求,并且灵活的适应未来的变化呢?
接下来分享一个多模块间通信的真实案例。
二、背景
神策推出的 SensorsAnalytics SDK (后续简称 SA SDK)[1]是数据采集埋点 SDK, 集成 SA SDK 后,能够采集数据,从而为数据分析提供依据。
而数据分析的最终目的,还是为了给用户提供更好的营销服务,神策也为此提供了营销相关的产品:神策营销云,它可以对特定的用户群体进行推送、弹窗、短信等类似的运营服务。对于 SDK 而言,SA SDK 已经满足不了需求,弹窗 SDK(后续简称 SF SDK)[2] 应运而生。
三、功能简介
SF SDK 进行弹窗的依据是 SA SDK 的行为数据。
举个例子,运营的同事想给浏览过商品的用户赠送优惠券,只需要三步就可以完成:
1. 利用 SA SDK 在用户浏览商品时进行埋点,比如 $AppViewScreen;
2. 运营同事在神策智能运营平台中,配置触发 $AppViewScreen 事件时的弹窗,并且选择弹窗的 UI;
3. SF SDK 获取到后端配置的弹窗数据,进行逻辑判断,决定是否弹窗。
整个运营活动的配置如图 3-1 所示:
在整个过程中,当埋好点后,运营同事只需要设置:弹窗弹出的时机、弹窗的 UI。其他的都不需要关注,客户端就可以在