Google上架之A/B融合包

一般来说,Google马甲包的A/B包都是独立的,我们一般把A包称为壳包,它是给Google审核看的。

根据技术方案的不同,大概有这么几类:

A包B包事件上报
Flutter/CordovaURL地址,直接用Webview打开客户端jsbridge或者服务端S2S
java/Kotlin + NDK(可选)URL地址客户端jsbridge或者服务端S2S
java/Kotlin + NDK(可选)B面apkapk 客户端上报
Unity/CocosURL地址客户端jsbridge或者服务端S2S
Unity/CocosB面apkapk 客户端上报
Unity/Cocos和A包融合(同源)Unity/Cocos自己上报

今天我们就分析最下面这种包,就是A/B包融合一体的包。

包名:com.luckycardzumatp.luckycardzumagame

上架时间:2026年3月10日

https://play.google.com/store/apps/details?id=com.luckycardzumatp.luckycardzumagame

下载次数:100k+

技术方案

A/B包是cocos creator打的标准cocos包,其中A面用到的scene预制在包里面,B面用到的scene需要等A/B判断ok后,从服务器下载。

A/B判断:轮询Adjust.getAttribution去拿渠道安装来源

1.先判断MCC卡是否ok。

2. 然后发送一个HTTP请求给服务器,内容如下:

https://xxxxx/login?unionId=a8ae8598ff2add5f886d4235ccf6b11e&type=Organic&times=1&Loc=ln&device_net_work_type=false

这里关键的是传入了type=Organic这个参数,用于判断渠道来源。

这个参数来自于哪里呢:Adjust.getAttribution返回值的network字段。

我们知道,从Adjust初始化到Adjust.getAttribution能返回归因后的值,这段时间差了3-5s,如果获取时间太早,就获取不到。

这个app的做法非常简单,就是不断去轮询,每1s去查询1次,直到查到Adjust.getAttribution的返回值正常为止,如果一直不正常,就查询15次结束。

在轮询期间,一直显示loading页面,所以体验不是很好。

3. 服务器返回的结果如果ok,这个时候就在cocos层启动下载B面资源的过程,然后进入B面。

这种方案的好处是获取安装来源是通过Adjust的接口,另外A/B同源,核心判断逻辑在cocos里面这样会比较安全。但是也存在几个问题:

1. Adjust.getAttribution天然比google自带的installreferer返回要慢。

2. Adjust.getAttribution会有很多玩家归因不成功,导致被当成自然流量,只能进入A面,造成转换率低。

3. 做包比较耗时,可复用性差。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注