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");
        // 触发激活事件
		//首次接入神策SDK,请使用trackAppInstall,如果之前使用了trackInstallation,也建议尽快改成trackAppInstall,原有的激活事件需要合并看数的话使用【虚拟事件】将原激活事件和 $AppInstall 合并分析数据。 如果因为暂时无法修改接口,也可以继续用trackInstallation
         SensorsDataAPI.sharedInstance().trackAppInstall(properties);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
JAVA
  1. 若用原记录的激活事件名不是 $AppInstall,需要使用虚拟事件将原激活事件和 $AppInstall 合并分析数据,具体咨询神策技术支持;
  2. 更多关于渠道追踪功能的说明,请参考渠道追踪

2. 追踪并进行渠道匹配和回传

从 Android v4.1.0 开始 SDK 支持 track 方法触发的自定义事件添加渠道属性的逻辑

2.1. 使用方法

调用 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) 来对特定的事件进行渠道追溯。

  • 当次安装首次触发回传事件,记录事件并进行渠道匹配和回传。
  • 当次安装再次触发回传事件,记录事件但不会进行渠道匹配及回传。
  • 卸载重装首次触发回传事件,记录事件并进行渠道匹配和回传。

上述规则适用于同名事件,不同事件之间不相互影响。

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