热力引擎SDK支持包括点击、页面浏览事件的自动采集
开启自动采集的方法:
List<AutoTrackEventType> autoTrackEventTypeList = new ArrayList<>();
autoTrackEventTypeList.add(AutoTrackEventType.AutoTrackAppViewScreen);
autoTrackEventTypeList.add(AutoTrackEventType.AutotrackAppClick);
SolarEngineConfig config = new SolarEngineConfig.Builder()
.enableAutoTrackEvent(autoTrackEventTypeList) //自动采集方法入口
.build();
参数名称 | 参数含义 |
AutoTrackEventType.AutoTrackAppViewScreen | 自动采集页面浏览事件 |
AutoTrackEventType.AutotrackAppClick | 自动采集点击事件 |
方法示例
public void enableAutoTrack();
调用示例
import com.reyun.solar.engine.SolarEngineManager;
SolarEngineManager.getInstance().enableAutoTrack();
方法示例
public void disableAutoTrack();
调用示例
import com.reyun.solar.engine.SolarEngineManager;
SolarEngineManager.getInstance().disableAutoTrack();
方法示例
public void enableAutoTrackAppClick();
调用示例
import com.reyun.solar.engine.SolarEngineManager;
SolarEngineManager.getInstance().enableAutoTrackAppClick();
方法示例
public void disableAutoTrackAppClick();
调用示例
import com.reyun.solar.engine.SolarEngineManager;
SolarEngineManager.getInstance().disableAutoTrackAppClick();
方法示例
public void enableAutoTrackApViewScreen();
调用示例code:
import com.reyun.solar.engine.SolarEngineManager;
SolarEngineManager.getInstance().enableAutoTrackApViewScreen();
方法示例
public void disableAutoTrackApViewScreen();
调用示例
import com.reyun.solar.engine.SolarEngineManager;
SolarEngineManager.getInstance().disableAutoTrackApViewScreen();
方法示例
public void ignoreAutoTrackActivity(Class<?> ignoredActivity);
参数相关
参数名称 | 参数含义 | 参数类型 | 是否必传 |
ignoredActivity | 指定忽略的Activity | Class<?> | 是 |
调用示例
import com.reyun.solar.engine.SolarEngineManager;
SolarEngineManager.getInstance().ignoreAutoTrackActivity(MainActivity.class);
另外除了上面的api之外,开发者也可以通过在Activity上添加注解@SolarEngineIgnoreTrackAppViewScreenAndAppClick来忽略单个Activity下的自动采集
调用示例code:
import com.reyun.solar.engine.autotrack.SolarEngineIgnoreTrackAppViewScreenAndAppClick;
@SolarEngineIgnoreTrackAppViewScreenAndAppClick
public class MainActivity extends Activity {
}
方法示例
public void restoreAutoTrackActivity(Class<?> restoredActivity);
参数相关
参数名称 | 参数含义 | 参数类型 | 是否必传 |
restoredActivity | 指定恢复的Activity | Class<?> | 是 |
调用示例
import com.reyun.solar.engine.SolarEngineManager;
SolarEngineManager.getInstance().restoreAutoTrackActivity(MainActivity.class);
方法示例
public void ignoreAutoTrackActivities(List<Class<?>> ignoredActivities);
参数相关
参数名称 | 参数含义 | 参数类型 | 是否必传 |
ignoredActivities | 指定忽略的Activity集合 | List> | 是 |
调用示例
import com.reyun.solar.engine.SolarEngineManager;
List<Class<?>> classList = new ArrayList<>();
classList.add(MainActivity.class);
classList.add(LoginActivity.class);
SolarEngineManager.getInstance().ignoreAutoTrackActivities(classList);
方法示例
public void restoreAutoTrackActivities(List<Class<?>> restoredActivities);
参数相关
参数名称 | 参数含义 | 参数类型 | 是否必传 |
restoredActivities | 指定恢复的Activity集合 | Class<?> | 是 |
调用示例
import com.reyun.solar.engine.SolarEngineManager;
List<Class<?>> classList = new ArrayList<>();
classList.add(MainActivity.class);
classList.add(LoginActivity.class);
SolarEngineManager.getInstance().restoreAutoTrackActivities(classList.class);
方法示例
public void ignoreViewType(Class ignoredViewType);
参数相关
参数名称 | 参数含义 | 参数类型 | 是否必传 |
ignoredViewType | 指定忽略的控件类型 | Class | 是 |
调用示例
import com.reyun.solar.engine.SolarEngineManager;
SolarEngineManager.getInstance().ignoreViewType(Button.class);
方法示例
public void restoreViewType(Class restoredViewType);
参数相关
参数名称 | 参数含义 | 参数类型 | 是否必传 |
restoredViewType | 指定恢复的控件类型 | Class | 是 |
调用示例
import com.reyun.solar.engine.SolarEngineManager;
SolarEngineManager.getInstance().restoreViewType(Button.class);
方法示例
public void setViewId(View view, String viewId);
参数相关:
参数名称 | 参数含义 | 参数类型 | 是否必传 |
view | 需要设置id属性的View | View | 是 |
viewId | 设置的控件ID | String | 是 |
调用示例
import com.reyun.solar.engine.SolarEngineManager;
SolarEngineManager.getInstance().setViewId(customBtn, viewId);
方法示例
public void setViewProperties(View view, JSONObject customProperties);
参数相关
参数名称 | 参数含义 | 参数类型 | 是否必传 |
view | 需要设置id属性的View | View | 是 |
customProperties | view的自定义属性 | JSONObject | 是 |
调用示例
import com.reyun.solar.engine.SolarEngineManager;
import org.json.JSONObject;
JSONObject customProperties = new JSONObject();
try {
//开发者自定义Json格式事件属性
customProperties.put("view_key1","view_value1");
customProperties.put("view_key2","view_value2");
} catch (JSONException e) {
///
}
SolarEngineManager.getInstance().setViewProperties(customBtn, customProperties);
调用示例
import com.reyun.solar.engine.autotrack.SolarEngineScreenAutoTrack;
public class MainActivity extends Activity implements SolarEngineScreenAutoTrack {
@Override
public String getScreenUrl() {
return "solarengine://page/inappevent";
}
@Override
public JSONObject getScreenAutoTrackProperties() throws JSONException {
JSONObject customProperties = new JSONObject();
customProperties.put("key1", "value1");
customProperties.put("key2", "value2");
return customProperties;
}
}
如果使用到了自动采集功能且打包时需要配置混淆,请将下方代码增加到混淆配置文件中
# TabLayout
-keep class android.support.design.widget.TabLayout$Tab {*;}
-keep class com.google.android.material.tabs.TabLayout$Tab {*;}
-keep class * extends android.support.design.widget.TabLayout$Tab {*;}
-keep class * extends com.google.android.material.tabs.TabLayout$Tab {*;}
# SwitchCompat
-keep class android.support.v7.widget.SwitchCompat {*;}
-keep class androidx.appcompat.widget.SwitchCompat {*;}
-keep class * extends android.support.v7.widget.SwitchCompat {*;}
-keep class * extends androidx.appcompat.widget.SwitchCompat {*;}
# ContextCompat
-keep class android.support.v4.content.ContextCompat {*;}
-keep class androidx.core.content.ContextCompat {*;}
-keep class * extends android.support.v4.content.ContextCompat {*;}
-keep class * extends androidx.core.content.ContextCompat {*;}
#ActionBar
-keep class android.support.v7.app.ActionBar {*;}
-keep class androidx.appcompat.app.ActionBar {*;}
-keep class * extends android.support.v7.app.ActionBar {*;}
-keep class * extends androidx.appcompat.app.ActionBar {*;}
# AppCompatActivity
-keep class android.support.v7.app.AppCompatActivity {
public android.support.v7.app.ActionBar getSupportActionBar();
}
-keep class androidx.appcompat.app.AppCompatActivity {
public androidx.appcompat.app.ActionBar getSupportActionBar();
}
-keep class * extends android.support.v7.app.AppCompatActivity {
public android.support.v7.app.ActionBar getSupportActionBar();
}
-keep class * extends androidx.appcompat.app.AppCompatActivity {
public androidx.appcompat.app.ActionBar getSupportActionBar();
}
# Annotation
-keepattributes *Annotation*
-keepattributes *JavascriptInterface*
页面浏览事件的 _event_name 为 _appViewScreen
方法示例:
- (void)trackAppViewScreen:(UIViewController *)viewController withProperties:(NSDictionary *)properties;
参数相关:
参数名称 | 参数含义 | 参数类型 | 是否必传 |
viewController | 当前页面所属viewController | UIViewController | 是 |
properties | 开发者传入的自定义属性说明见目录:4.自定义属性 | NSDictionary | 否 |
调用示例code:
#import <SolarEngineSDK/SolarEngineSDK.h>
UIViewController *vc = self;
[[SolarEngineSDK sharedInstance] trackAppViewScreen:vc withProperties:@{@"custom_name":@"ActionViewController"}];
控件点击事件的 _event_name 为 _applicationClick
控件点击的类型支持以下常见的控件view或自定义类型view,如:UIView、UIButton、UITextView、UIPickerView、UIDatePicker、UISegmentedControl、UISwitch、UISlider、UIStepper等
方法示例:
- (void)trackAppClick:(UIView *)view withProperties:(NSDictionary *)properties;
参数相关:
参数名称 | 参数含义 | 参数类型 | 是否必传 |
view | 点击的view元素 | UIView | 是 |
properties | 开发者传入的自定义属性说明见目录:4.自定义属性 | NSDictionary | 否 |
调用示例code:
#import <SolarEngineSDK/SolarEngineSDK.h>
UIButton *button = self.button;
[[SolarEngineSDK sharedInstance] trackAppClick: button withProperties:@{@"custom_name":@"UIButton"}];
SDK自持自动埋点采集功能,默认清下自动埋点采集功能为关闭状态,开启后SDK将自动采集App内的 "页面浏览" 和 "控件点击"
页面浏览事件的 _event_name 为 _appViewScreen
控件点击事件的 _event_name 为 _applicationClick
注:开启页面或控件自动埋点采集后,对应页面或控件的手动埋点采集API调用将失效
SDK提供两种方式开启自动采集
1、初始化SDK时开启自动追踪
2、调用自动追踪API
自动追踪功能开启后也可以再任意时候去关闭,关闭后SDK将不再产生自动采集的埋点事件。
初始化SDK时开启自动追踪,示例代码
SEConfig *config = [[SEConfig alloc] init];
config.autoTrackEventType = SEAutoTrackEventTypeAppClick | SEAutoTrackEventTypeAppViewScreen;
[[SolarEngineSDK sharedInstance] startWithAppKey:your_appKey userId:your_userId_SolarEngine config:config];
调用自动追踪API,示例代码
// 开启自动追踪控件点击 和 页面浏览
[[SolarEngineSDK sharedInstance] setAutoTrackEventType:SEAutoTrackEventTypeAppClick | SEAutoTrackEventTypeAppViewScreen];
// 只开启自动追踪控件点击
[[SolarEngineSDK sharedInstance] setAutoTrackEventType:SEAutoTrackEventTypeAppClick];
关闭自动追踪,示例代码
// 关闭自动追踪
[[SolarEngineSDK sharedInstance] setAutoTrackEventType:SEAutoTrackEventTypeNone];
SDK给 UIViewController 的 Category 添加了一个属性 se_ignoreAutoTrack 用来设置是否忽略当前页面是否忽略自动采集.
忽略后该页面不在产生自动埋点事件 "appViewScreen"
该页面忽略自动埋点采集后,该页面内的所有控件的自动埋点采集也将会被忽略。
注:被忽略的页面或控件,可支持手动调用埋点采集
示例代码
- (void)viewDidLoad {
[super viewDidLoad];
// 忽略当前 ViewController 自动追踪
self.se_ignoreAutoTrack = YES;
}
SDK支持忽略某类控件的自动埋点采集,忽略后该类控件将不再产生自动埋点采集事件 "_applicationClick"
注:被忽略的页面或控件,可支持手动调用埋点采集
忽略某类控件API
/// 忽略某类控件自送追踪
/// @param classList 需要忽略控件的类名,例如: @[[UIButton class]]
- (void)ignoreAutoTrackAppClickClassList:(NSArray<Class> *)classList;
示例代码
// 忽略UIButton类型的自动埋点采集
[[SolarEngineSDK sharedInstance] ignoreAutoTrackAppClickClassList:@[[UIButton class]];
SDK支持给页面或控件添加自定义属性,在产生对应的页面 或 控件的自动采集埋点事件时,自定义属性将会一起带上。
SDK通过Category给 UIViewController 和 UIView 增加了 se_customProperties 自定义属性。
添加自定义属性API
@interface UIView (SolarEngine)
/// 自定义属性,设置自定义属性后会跟随控件点击自动追踪事件一起上报
@property (nonatomic, copy) NSDictionary *se_customProperties;
@end
@interface UIViewController (SolarEngine)
/// 自定义属性,设置自定义属性后会跟随页面浏览自动追踪事件一起上报
@property (nonatomic, copy) NSDictionary *se_customProperties;
@end
示例代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"CellID"];
// 给Cell设置自定义属性,cell点击时产生的自动埋点采集将带着该自定义属性
cell.se_customProperties = @{@"key1":@"value1"};
return cell;
}
SDK可以通过给当前页面设置ScreenUrl,下一个页面自动采集时 _referrer_name 字段就为刚才设置的自定义 ScreenUrl。
示例代码
#import <SolarEngineSDK/SolarEngineSDK.h>
@interface ViewController ()<SEScreenAutoTracker>
- (NSString *)getScreenUrl {
return @"custom_screenUrl";
}
SESDK.trackPageView();
SESDK.trackPageClick(element);
// element 点击行为的元素对象
element对象上可绑定如下data属性
data-element-id 自定义id属性,如果没有配置时会自动抓取点击行为的元素对象元素的id属性。以_element_id进行上报。
data-element-target-url 当前点击行为发生跳转时的目标url, 如果没有配置时且当前点击行为的元素是a标签,那么会自动抓取a标签的href属性。以_element_target_url进行上报。
注:SDK还会自动抓取点击行为的元素对象如下属性:
1.元素上name属性,以_element_name进行上报
2.元素上class属性,以_element_class_name进行上报
3.元素文本内容,以_element_content进行上报
4.元素标签,以_element_type进行上报
SDK支持自动埋点采集功能,默认情况下自动埋点采集功能为关闭状态,开启后SDK将自动采集web页面内的 "浏览" 和 "点击" ,对应上面的 3.1页面浏览事件 和 3.2页面点击事件
页面浏览事件的 _event_name 为 _webViewScreen
元素点击事件的 _event_name 为 _webElementClick
注:开启页面或元素自动埋点采集后,对应页面或元素的手动埋点采集API调用将自动完成采集。
SDK提供两种方式开启自动采集
自动追踪功能开启后也可以在任意时候去关闭,关闭后SDK将不再产生自动采集的埋点事件。
初始化SDK时开启自动追踪,示例代码(参数含义见文档开头部分SDK初始化)
SESDK.init({
config: {
autoTrackConfig: {
autoTrack: true,
autoTrackPageView: true,
autoTrackPageClick: true,
isTrackSinglePage: true,
}
}
})
自动埋点采集配置AutoTrackConfig参数说明:
参数 | 类型 | 是否必填 | 说明 |
autoTrack | boolean | 否 | 是否开启页面浏览、点击的自动埋点采集,默认false不开启 |
autoTrackPageView | boolean | 否 | 是否开启页面浏览自动埋点采集,默认false, 如果开启自动埋点采集,则禁止手动调用页面浏览API |
autoTrackPageClick | boolean | 否 | 是否开启页面元素点击的自动埋点采集,默认false,如果开启自动采集,则禁止手动调用页面元素点击API注意:如果开启页面元素点击的自动埋点采集,那么该元素的点击事件回调中不能设置阻止该点击事件冒泡行为。 |
isTrackSinglePage | boolean | 否 | 是否单页应用开启页面浏览自动埋点采集,默认true |
调用自动追踪API,示例代码
// 开启自动追踪元素点击 和 页面浏览
// 方式一
SESDK.setAutoTrack({
autoTrack: true
});
// 方式二
SESDK.setAutoTrack({
autoTrackPageView: true,
autoTrackPageClick: true,
});
// 只开启自动追踪元素点击
SESDK.setAutoTrack({
autoTrackPageClick: true,
});
关闭自动追踪,示例代码
// 关闭自动追踪
// 方式一
SESDK.setAutoTrack({
autoTrack: false
});
// 方式二
SESDK.setAutoTrack({
autoTrackPageView: false,
autoTrackPageClick: false,
});
SDK提供setTrackPageView用来设置是否忽略当前页面的自动采集;以及给页面添加自定义属性,在产生页面自动埋点事件时,自定义属性将会一起带上。
忽略后该页面不再产生自动埋点事件 "_webViewScreen"
该页面忽略自动埋点采集后,该页面内的所有元素点击的自动埋点采集也将会被忽略。
注:被忽略的页面或元素,可支持手动调用埋点采集
示例代码
SESDK.setTrackPageView(Array<{
path: trackConfig
}>)
path: 当前页面的path路径(页面的url)
trackConfig参数说明:
参数名称 | 参数含义 | 参数类型 | 是否必传 |
ignoreTrack | 是否忽略对应path的浏览行为自动上报,默认false。如果为true,同时也会忽略对应path下所有的点击行为自动上报。 | boolean | 否 |
customProperty | 对应path的浏览行为自动上报时的自定义属性 | object(具体要求见事件上报-自定义属性要求) | 否 |
调用示例:
SESDK.setTrackPageView([
{
'https://portal.solar-engine.com/all/product/dashboard': {
ignoreTrack: false,
customProperty: {
a: 1,
b: 2
}
}
}
])
SDK支持忽略某个元素的自动埋点采集,忽略后该元素将不再产生自动埋点采集事件 "_webElementClick"
注:被忽略的元素,可支持手动调用埋点采集
忽略某个元素,在元素上绑定属性data-ignore-track="true",忽略后该元素可调用6.2中的 "元素点击事件"方法
<div data-ignore-track="true">我是按钮</div>
注:
如果在页面关闭时上报事件信息,该上报请求可能会失败。比如点击按钮时触发了页面跳转(非单页应用跳转),则跳转前页面上的信息存在上报失败的可能。此时在开启元素点击自动埋点采集的情况下,建议忽略当前按钮的自动埋点采集,采用手动调用方式上报数据。
// 元素点击事件的回调方法
function clickHandler() {
// 手动上报点击行为事件
SESDK.trackPageClick(element);
//延迟跳转页面,给 SDK 发送数据提供时间
setTimeout(function(){
window.location.href = url;
},500);
}
SDK支持给元素添加自定义属性,在产生对应元素的自动采集埋点事件时,自定义属性将会一起带上。
SDK通过在元素上绑定属性data-custom-property来增加元素自定义属性, 自定义属性格式具体要求见事件上报-自定义属性要求)。
<div data-custom-property="{a: 1, b: 2}">我是按钮</div>
SESDK.trackPageView();
SESDK.trackPageClick(event);
// event 点击行为的event对象
点击的元素上可绑定如下data属性
data-element-id 自定义id属性,没有配置时会去元素的id。以_element_id进行上报。
data-content 元素自定义内容。以_element_content进行上报。
data-name 元素自定义name属性。以_element_name进行上报。
data-class-name 元素class属性。以_element_class_name进行上报。
data-type 元素类型-控件的类型,例如 Button。以_element_type进行上报。
data-element-target-url 当前点击行为发生跳转时的目标url。以_element_target_url进行上报。
SDK支持自动埋点采集功能,默认清下自动埋点采集功能为关闭状态,开启后SDK将自动采集小程序页面内的 "浏览" 和 "点击" ,对应上面的 4.1页面浏览事件 和 4.2页面点击事件
页面浏览事件的 _event_name 为 _mpViewScreen
元素点击事件的 _event_name 为 _mpElementClick
注:开启页面或元素自动埋点采集后,对应页面或元素的手动埋点采集API调用将失效。
SDK提供两种方式开启自动采集
1、初始化SDK时开启自动追踪
2、调用自动追踪API
自动追踪功能开启后也可以在任意时候去关闭,关闭后SDK将不再产生自动采集的埋点事件。
初始化SDK时开启自动追踪,示例代码(参数含义见文档开头部分SDK初始化)
SESDK.init({
config: {
autoTrackConfig: {
autoTrack: true,
autoTrackPageView: true,
autoTrackPageClick: true,
}
}
})
自动埋点采集配置AutoTrackConfig参数说明:
参数 | 类型 | 是否必填 | 说明 |
autoTrack | boolean | 否 | 是否开启页面浏览、点击的自动埋点采集,默认false不开启。 |
autoTrackPageView | boolean | 否 | 是否开启页面浏览自动埋点采集,默认false, 如果开启自动埋点采集,则禁止手动调用页面浏览API。 |
autoTrackPageClick | boolean | 否 | 是否开启页面元素点击的自动埋点采集,默认false,如果开启自动埋点采集,则禁止手动调用页面元素点击API。仅支持tap、longpress、longtap三种点击事件类型。注意:如果开启页面元素点击的自动埋点采集,那么该元素需要绑定事件触发回调函数,并且在Page或Component中注册该回调函数。 |
调用自动追踪API,示例代码
// 开启自动追踪元素点击 和 页面浏览
// 方式一
SESDK.setAutoTrack({
autoTrack: true
});
// 方式二
SESDK.setAutoTrack({
autoTrackPageView: true,
autoTrackPageClick: true,
});
// 只开启自动追踪元素点击
SESDK.setAutoTrack({
autoTrackPageClick: true,
});
关闭自动追踪,示例代码
// 关闭自动追踪
// 方式一
SESDK.setAutoTrack({
autoTrack: false
});
// 方式二
SESDK.setAutoTrack({
autoTrackPageView: false,
autoTrackPageClick: false,
});
SDK提供setTrackPageView用来设置是否忽略当前页面的自动采集;以及给页面添加自定义属性,在产生页面自动埋点事件时,自定义属性将会一起带上。
忽略后该页面不再产生自动埋点事件 "_mpViewScreen"
该页面忽略自动埋点采集后,该页面内的所有元素点击的自动埋点采集也将会被忽略。
注:被忽略的页面或元素,可支持手动调用埋点采集
示例代码
SESDK.setTrackPageView(Array<{
path: trackConfig
}>)
path: 当前页面的path路径(页面的url)
trackConfig参数说明:
参数名称 | 参数含义 | 参数类型 | 是否必传 |
ignoreTrack | 是否忽略对应path的浏览行为自动上报,默认false。如果为true,同时也会忽略对应path下所有的点击行为自动上报。 | boolean | 否 |
customProperty | 对应path的浏览行为自动上报时的自定义属性 | object(具体要求见事件上报-自定义属性要求) | 否 |
调用示例:
SESDK.setTrackPageView([
{
'pages/test/test': {
ignoreTrack: false,
customProperty: {
a: 1,
b: 2
}
}
}
])
SDK支持忽略某个元素的自动埋点采集,忽略后该元素将不再产生自动埋点采集事件 "_mpElementClick"
注:被忽略的元素,可支持手动调用埋点采集
忽略某个元素,在元素上绑定属性data-ignore-track="true",忽略后该元素可调用6.2中的 "元素点击事件"方法
<view data-ignore-track="true" bindtap="clickHandle">我是按钮</view>
注:在页面page或component下需要注册clickHandle回调方法
SDK支持给元素添加自定义属性,在产生对应元素的自动采集埋点事件时,自定义属性将会一起带上。
SDK通过在元素上绑定属性data-custom-property来增加元素自定义属性。自定义属性格式具体要求见事件上报-自定义属性要求。
<view data-custom-property="{a: 1, b: 2}" bindtap="clickHandle">我是按钮</view>
注:在页面page或component下需要注册clickHandle回调方法