菜单

进阶功能

1.集成 OAID

匿名设备标识符(Open Anonymous Device Identifier,简称 OAID)是一种用于安卓设备的唯一标识符,可由用户重置。该标识符由移动安全联盟(MSA)、中国信息通信研究院以及设备厂商合力推出,旨在替代 IMEI 等不可重置的设备标识符,以保护用户隐私。

使用最新的 MSA SDK 版本,才能支持市面上最新推出的手机,进而提升 OAID 的获取率,由于归因匹配很大程度上依赖 OAID 完成,所以使用最新版本的 MSA SDK 对于降低您应用的买量成本至关重要

引力引擎 SDK 支持最新版本的 MSA SDK!需要您按照如下步骤进行手动集成。

1.1 集成 OAID

1.1.1 MSA1.0.25 之后版本(推荐,采集率更高)

  • MSA 官网注册账号并等待审核通过;
  • 账号审核通过后,下载OAID的SDK,找到里面的 csv 文件,填写好游戏包名等信息,然后附邮件发送到 msa@caict.ac.cn 获取对应的证书文件(证书文件有效期为1年,请注意及时更换,建议可以通过服务端下发证书字符串,并通过引力提供的:setOaidCertStr 方法传入证书,可以保证历史已发布apk包在证书到期时无需升级安装包即可继续正常采集 oaid。
  • 证书申请完成之后,将supplierconfig.json 、应用包名.cert.pemaar 文件放在项目中合适的位置;
  • 按照 MSA 文档添加混淆配置。

引力引擎会默认读取 assets 中命名为应用包名.cert.pem的文件当做签名文件初始化 MSA SDK。

应用包名.cert.pem中应用包名要替换成你自己的应用包名!

如果你需要自定义签名文件的路径,可以使用如下方法进行设置

/**
* 定义 oaid 证书在 assets 中的文件相对路径
*
* @param filePath oaid 证书在 assets 中的相对路径,eg:"file/test.cert.pom"
*/
OaidHelper.setOaidCertFilePath(filePath);

如果您的证书文件不是放在项目中参与打包,而是后端下发的字符串,您可以通过如下方式传入证书内容:

/**
 * 直接传入证书的文本内容
 * @param oaidCertStr
 */
OaidHelper.setOaidCertStr(oaidCertStr);

1.1.2 MSA1.0.25 及之前版本

无需单独申请 MSA 证书,只需将 MSA 的 AAR 包集成到项目中即可,引力 SDK 将自动采集设备的 OAID。MSA 1.0.25 下载

缺点:部分新上市的手机机型可能无法成功采集 OAID,不建议采用!

1.2 直接传入 OAID

如果您通过其他 SDK,比如友盟 SDK 已经获取到 OAID 字符串,您可以通过直接传入字符串的方式把 OAID 传递给引力 SDK,这样能避免引力再次获取,传入方式如下:

/**
 * 用户直接设置oaid
 * @param context
 * @param oaid
 */
OaidHelper.setOaid(context, yourOaidString);

1.3 获取 OAID

如您有获取 OAID 字符串的需要,可以按照如下方式获取

OaidHelper.getOpenAdIdentifier(mContext);

请注意该接口是同步接口,必须子线程中使用!经过测试,耗时在 10 - 1000ms 之间。

2.自动采集事件

引力引擎 SDK 支持自动采集一些基础事件以降低您的接入成本,您可以参考自动采集一文来快速开启。

3.开启 Debug 模式

SDK 支持在两种模式下运行:

  • Normal: 线上模式,数据会存入缓存,并依据一定的缓存策略上报
  • Debug: 测试模式,数据逐条上报。当出现问题时会以日志和异常的方式提示用户,您也可以去事件流中查看实时上报的数据数,辅助您判断数据接入是否正常。

您可以通过如下方式来开启 Debug

GEConfig config = GEConfig.getInstance(mContext, Constants.ACCESS_TOKEN);
config.setMode(GEConfig.ModeEnum.DEBUG);

Debug 模式仅仅用于集成阶段数据校验,不要在生产模式下使用!

4.绑定三方平台

引力支持与数数BI打通,具体如下:

在用户归因成功之后,引力将使用数数的 数据接收接口 透传数据到数数后台,方便您在数数平台实时查看用户买量数据(如广告主账户ID、计划ID等等)。你需要完整完成以下两步,才能正常接收数据到数数系统:
  1. 引力后台配置数数相关
  2. 客户端代码触发三方绑定事件上报

4.1 引力后台配置

您需要先在引力后台-设置-应用管理页面配置项中配置好数数科技回调,需提供以下信息:

数数应用id:从数数后台获取对应产品的id

数数采集地址:根据数数接收接口文档找到您公司对应的采集地址,采集地址以sync_json结尾

回传模式选择:

  • user_set:多次回调数据到数数时,将会覆盖原有的属性值
  • user_setOnce:多次回调数据到数数时,如该属性之前已经有值,则忽略本次更新

4.2 触发【三方绑定事件】

为确保引力能正常执行数数回调,请务必在接入完成后进行以下验证:

  • 触发【三方绑定事件】上报
  • 用户细查-深度挖掘模块中检查该用户的行为序列
  • 确认行为序列中已包含【三方绑定事件】

若未检测到该事件,请检查接入流程是否完整。此验证步骤对确保回调功能正常运行至关重要。

引力会自动将引力 client ID 和您传入的数数 account_id 以及 distinct_id 做关联,在回调数数接口时,通过这个关联传递对应的 account_iddistinct_id 给数数后台

方法示例

public void bindTAThirdPlatform(String taAccountId, String taDistinctId)

参数说明

参数名称 参数含义 参数类型 是否必传
taAccountId 当前用户的数数账户 ID (#account_id) string
taDistinctId 当前用户的数数访客 ID (#distinct_id) string

调用示例

gravityEngineSDKInstance.bindTAThirdPlatform("当前用户的taAccountId","当前用户的taDistinctId");

5.时间校准

引力引擎 SDK 会默认使用客户端本机时间作为事件发生时间,如果用户手动修改设备时间会影响到您的业务分析(尤其是漏斗分析)的准确性,此时可以通过校准时间操作保证事件发生时间的准确性。SDK提供了时间戳和NTP两种时间校准方式。

5.1 通过时间戳校准 

您可以通过调用 calibrateTime 方法传入从服务端获取的当前时间戳对 SDK 的时间进行校准。此后,所有未指定时间的调用,包括事件数据和用户属性设置操作,都会使用校准后的时间作为发生时间。

代码示例

// 1733169963000 为当前 unix 时间戳,单位为毫秒,对应北京时间 2024-12-03 04:06:03
gravityEngineSDKInstance.calibrateTime(1733169963000);

5.2 通过 NTP 服务器校准 

您可以通过调用 calibrateTimeWithNtp 方法传入NTP服务器地址,之后 SDK 会尝试从传入的 NTP 服务地址中获取当前时间,并对 SDK 时间进行校准。如果在默认的超时时间(3 秒)之内,仍未获取到 NTP 服务器返回的正确结果,后续将使用本地时间上报数据。

代码示例

// 使用阿里云 NTP 服务对时间进行校准
gravityEngineSDKInstance.calibrateTimeWithNtp("ntp.aliyun.com");
  • 使用 NTP 服务进行时间校准存在一定的不确定性,建议您优先考虑用时间戳校准的方式

  • 您需要谨慎地选择您的 NTP 服务器地址,以保证网络状况良好的情况下,用户设备可以很快的获取到服务器时间

  • 关于 NTP 服务器相关更多信息请参考:https://dns.icoa.cn/ntp/

 

上一个
用户属性上报
下一个
自动采集
最近修改: 2025-09-15Powered by