记录激活事件
激活事件建议在原生调用
Android 端
可以调用 trackAppInstall() 方法记录激活事件,多次调用此方法只会在第一次调用时触发激活事件
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();
}
在权限回调的 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");
// 触发激活事件
SensorsDataAPI.sharedInstance().trackAppInstall(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
申请权限结果无论申请权限成功失败,都要调用 trackAppInstall():
iOS 端
可以在初始化 SDK 后调用 - trackAppInstall 方法记录激活事件,多次调用此方法只会在第一次调用时触发激活事件:
// 需要 #import
if (@available(iOS 14, *)) {
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
// iOS 14 及以上记录激活事件。
// 如果您之前使用 - trackInstallation: 触发的激活事件,需要继续保持原来的调用,无需改为 - trackAppInstall: , 否则会导致激活事件数据分离。
[[SensorsAnalyticsSDK sharedInstance] trackAppInstallWithProperties:@{@"DownloadChannel": @"AppStore"}];
}];
} else {
// iOS 13 及以下记录激活事件
[[SensorsAnalyticsSDK sharedInstance] trackAppInstallWithProperties:@{@"DownloadChannel": @"AppStore"}];
}
可以调用 trackAppInstall() 方法记录激活事件,多次调用此方法只会在第一次调用时触发激活事件
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();
}
在权限回调的 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");
// 触发激活事件
SensorsDataAPI.sharedInstance().trackAppInstall(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
申请权限结果无论申请权限成功失败,都要调用 trackAppInstall():
可以在初始化 SDK 后调用 - trackAppInstall 方法记录激活事件,多次调用此方法只会在第一次调用时触发激活事件:
// 需要 #import
if (@available(iOS 14, *)) {
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
// iOS 14 及以上记录激活事件。
// 如果您之前使用 - trackInstallation: 触发的激活事件,需要继续保持原来的调用,无需改为 - trackAppInstall: , 否则会导致激活事件数据分离。
[[SensorsAnalyticsSDK sharedInstance] trackAppInstallWithProperties:@{@"DownloadChannel": @"AppStore"}];
}];
} else {
// iOS 13 及以下记录激活事件
[[SensorsAnalyticsSDK sharedInstance] trackAppInstallWithProperties:@{@"DownloadChannel": @"AppStore"}];
}
注意
若用原记录的激活事件名不是 $AppInstall,需要使用 虚拟事件 将原激活事件和 $AppInstall 合并分析数据,具体咨询神策技术支持