1. 记录激活事件
可以调用 trackAppInstall() 方法记录激活事件,多次调用此方法只会在第一次调用时触发激活事件。在 trackAppInstall() 方法中会尝试读取:AndroidId、MEID、IMEI、MAC、OAID 标识符用于提高匹配准确性。
if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.M){
if (ActivityCompat.checkSelfPermission(this, "android.permission.READ_PHONE_STATE") != PackageManager.PERMISSION_GRANTED) {
// 6.0 以上,无权限时,先申请 READ_PHONE_STATE 权限。
ActivityCompat.requestPermissions(this, new String[]{"android.permission.READ_PHONE_STATE"}, 100);
} else {
// 6.0 以上,有权限时,直接触发激活事件。
trackAppInstall();
}
} else {
// 6.0 以下,无须申请权限,直接触发激活事件。
trackAppInstall();
}
JAVA
在权限回调的 onRequestPermissionsResult() 方法中,申请权限结果回调无论申请权限成功失败,都要调用 trackAppInstall():
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 100) {
// 申请权限结果回调时(无论申请权限成功失败),都需要触发激活事件。
trackAppInstall();
}
}
/**
* 记录激活事件
*/
private void trackAppInstall() {
try {
JSONObject properties = new JSONObject();
//这里的 DownloadChannel 负责记录下载商店的渠道,值应传入具体应用商店包的标记。如果没有为不同商店打多渠道包,则可以忽略该属性的代码示例。
properties.put("DownloadChannel", "XXX");
// 触发激活事件
// 如果您之前使用 trackInstallation() 触发的激活事件,需要继续保持原来的调用,无需改为 trackAppInstall(),否则会导致激活事件数据分离。
SensorsDataAPI.sharedInstance().trackAppInstall(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
JAVA
- 若用原记录的激活事件名不是 $AppInstall,需要使用虚拟事件将原激活事件和 $AppInstall 合并分析数据,具体咨询神策技术支持
- 更多关于渠道追踪功能的说明,请参考渠道追踪。
2. 追踪并进行渠道匹配和回传
从Android v4.1.0 开始 SDK 支持 track 方法触发的自定义事件添加渠道属性的逻辑。
2.1. 使用方法
在初始化 SDK 的时候调用 SAConfigOptions.enableAutoAddChannelCallbackEvent(true) 方法来开启功能,此功能默认是关闭的。示例如下:
private void initSensorsDataAPI() {
SAConfigOptions configOptions = new SAConfigOptions(SA_SERVER_URL);
configOptions.setAutoTrackEventType(SensorsAnalyticsAutoTrackEventType.APP_START |
SensorsAnalyticsAutoTrackEventType.APP_END |
SensorsAnalyticsAutoTrackEventType.APP_VIEW_SCREEN |
SensorsAnalyticsAutoTrackEventType.APP_CLICK)
.enableTrackAppCrash()
.enableAutoAddChannelCallbackEvent(true) //开启新渠道功能
SensorsDataAPI.startWithConfigOptions(this, configOptions);
}
JAVA
2.2. 效果
可以使用 SensorsDataAPI.shareInstance().track(eventName) 来对特定的事件进行渠道追溯。

- 当次安装、首次触发回传事件,记录事件并进行渠道匹配和回传。
- 当次安装、再次触发回传事件,记录事件但不会进行渠道匹配及回传。
- 卸载重装、首次触发回传事件,记录事件并进行渠道匹配和回传。
p.s. 上述规则适用于同名事件,不同事件之间不相互影响。
3. 广告相关事件直报
Android SDK v6.7.4 及以上版本支持设置广告相关的事件直接上报到广告服务器,具体用法如下:
SecreteKey secreteKey = new SecreteKey("秘钥", 秘钥版本, "AES", "RSA");
List<String> list = new ArrayList<>();
list.add("$AppInstall");
configOptions.setAdvertConfig(new SAAdvertisingConfig("广告数据接收地址", list, secreteKey));
SensorsDataAPI.startWithConfigOptions(this, configOptions);
CODE
- 如果事件上报到广告服务器不需要加密,则初始化 SAAdvertisingConfig 时,密钥可以传 null
- SAAdvertisingConfig 初始化时,上报地址和事件集合两个参数是必填项
- 上报到广告服务器的地址以及加密密钥,请联系售后或者交付团队获取
4. 广告再营销
从 Android SDK v6.7.6 版本开始,支持广告再营销功能,具体用法参考下面:
SAConfigOptions configOptions = new SAConfigOptions(SA_SERVER_URL);
SAAdvertisingConfig advertisingConfig = new SAAdvertisingConfig();
// 开启广告再营销
advertisingConfig.enableRemarketing();
// 如果 SDK 需要延迟初始化,请记录拉起 App 时的 url,并在初始化时传入 SDK,SDK 如果非延迟初始化,无需设置此项
advertisingConfig.setWakeupUrl("延迟初始化SDK 时唤起 app 的 url");
configOptions.setAdvertConfig(advertisingConfig);
SensorsDataAPI.startWithConfigOptions(this, configOptions);
CODE