我是标题
  • 介绍
  • 产品使用指南
    • 新手入门
      • 神策分析是什么
      • 神策分析能做什么
      • 神策分析怎么解决问题
      • 神策分析的数据来源
    • 功能介绍
      • 基本概念
        • 行为分析常用名词
        • 神策分析相关名词
        • 基础指标配置说明
        • 属性筛选条件说明
      • 分析模块
        • 事件分析
        • Session 分析
        • 漏斗分析
        • 留存分析
        • 分布分析
        • 归因分析
        • 用户路径分析
        • 网页热力分析
        • APP 点击分析
        • 间隔分析
        • 用户属性分析
        • 搜索用户
        • 用户分群
          • 用户分群(1.14 版本)
          • 用户分群
          • 用户分群(1.13 之前版本)
        • 用户行为序列
        • 书签及数据概览
          • 数据概览(1.11 之前版本)
          • 概览分组
          • 渠道对比组件使用说明
          • 预置概览
        • 自定义查询
      • 辅助功能
        • 事件分类
        • 查询抽样
        • 权限管理
          • 角色权限与账号(1.14 版本)
        • 预警管理
        • 元数据管理
        • 可视化全埋点
        • 维度字典
        • 正则表达式
        • 推荐分享
        • 小版本升级
        • 掌上神策分析
  • 技术指南
    • 数据采集
      • 数据模型
      • 数据格式
      • 调试模式
        • 调试模式动态配置
      • 数据校验
      • 导入实时查看
        • 导入实时查看(新版本)
        • 导入实时查看(老版本)
      • 埋点管理
      • 多项目
      • 如何准确的标识用户
      • 新增用户及首日首次标记
    • 快速接入指南
      • 接入前准备(全员阅读)
      • 如何准确的标识用户 (全员阅读)
      • 事件设计 (需求方阅读)
      • SDK 采集数据 (开发必读)
        • JavaScript 快速使用
        • 微信小程序快速使用
        • Android 快速使用
        • iOS 快速使用
        • Java 快速使用
      • 数据校验(测试必读)
    • 客户端 SDK
      • C++ SDK
      • 微信小程序 SDK
        • 微信小程序 SDK 历史版
        • 微信小程序 SDK 标准版
        • 微信小程序 SDK 插件版
        • 微信小程序 SDK 自定义全埋点版
      • 支付宝小程序 SDK
      • 百度小程序 SDK
      • JavaScript SDK
        • 常见问题
        • 全埋点(AutoTrack)
        • 点击图(HeatMap)
        • 单页面
        • 关闭页面发数据
      • Android SDK
        • 常见问题
        • 全埋点(AutoTrack)
        • 点击图(HeatMap)
      • iOS SDK
        • 常见问题
        • 全埋点(AutoTrack)
        • 点击图(HeatMap)
      • 打通 App 与 H5
      • App 第三方框架
        • React Native(Android & iOS)
        • Flutter(Android & iOS)
        • Weex(iOS)
        • Weex(Android)
        • 第三方 H5 页面嵌入 js(iOS)
        • 第三方 H5 页面嵌入 js(Android)
      • APICloud SDK
    • 服务端 SDK
      • C SDK
        • C SDK Demo
      • CSharp SDK
      • Java SDK
        • Java SDK Demo
      • Python SDK
      • PHP SDK
      • Ruby SDK
      • Golang SDK
      • Node SDK
    • 公共属性
    • 渠道追踪
      • App 渠道追踪
      • Web 渠道追踪
      • 小程序渠道追踪
      • 渠道对接
      • 渠道链接管理
    • 数据导入
      • BatchImporter
      • LogAgent
        • LogAgent 场景使用示例
      • FormatImporter
      • HdfsImporter
      • 数据导入常见问题
    • 数据导出
      • 查询 API
      • 订阅实时数据
      • 使用 JDBC 进行数据访问
      • 数据迁移
    • 辅助工具
      • 数据清理工具使用说明
      • 多项目管理工具使用说明
      • 元数据创建工具使用说明
      • 环境检测工具使用说明
    • 高级功能
      • 数据接入 API
      • App 消息推送
      • 虚拟属性和维度表
      • 数据预处理模块
      • 服务转发配置
      • 使用 HTTPS 的数据接入
      • API
        • 查询 API
        • 功能 API
          • 分群 API(1.12 及之前版本)
          • 分群 API(1.13 版本)
          • 分群 API(1.14 版本)
          • 埋点统计 API(1.11 及之前版本)
          • 埋点统计 API(1.12 及之后版本)
      • 第三方登录
      • 数据归档
  • 最佳实践
    • 功能应用示例
      • 事件分析
      • 漏斗分析
      • 留存分析
      • 分布分析
      • 间隔分析
      • 用户分群
      • 自定义查询
      • 用户行为序列
    • 复杂分析场景
      • 定位商品销量变化原因
  • 常见问题
  • 产品更新日志
Powered by GitBook
On this page
  • 配置
  • 1. 自定义页面信息($AppViewScreen)
  • 2. 开启 Fragment 页面浏览事件的自动采集($AppViewScreen)
  • 3. 通过代码 track 浏览页面事件($AppViewScreen)
  • 4. AlertDialog
  • 5. 忽略某个页面或某些页面的事件
  • 6. 忽略某个类型控件的点击事件
  • 7. 忽略某个View的点击事件
  • 8. 设置元素ID
  • 9. 自定义元素属性
  • 10. 注解 @SensorsDataIgnoreTrackAppViewScreen
  • 11. 注解 @SensorsDataTrackViewOnClick
  • 12. 注解 @SensorsDataTrackEvent
  • 13. 开启 React Native 页面控件的自动采集($AppClick)
  • 14. TODO

Was this helpful?

  1. 技术指南
  2. 客户端 SDK
  3. Android SDK

全埋点(AutoTrack)

Previous常见问题Next点击图(HeatMap)

Last updated 6 years ago

Was this helpful?

配置

1. 自定义页面信息($AppViewScreen)

对于 App 中的核心页面(Activity),我们提供了一个 接口 ScreenAutoTracker:

public interface ScreenAutoTracker {
    /**
     * 返回当前页面的Url
     * 用作下个页面的referrer
     * @return String
     */
    String getScreenUrl();

    /**
     * 返回自定义属性集合
     * 我们内置了一个属性:$screen_name,代表当前页面名称, 默认情况下,该属性会采集当前Activity的CanonicalName,即:
     * activity.getClass().getCanonicalName(), 如果想自定义页面名称, 可以在Map里put该key进行覆盖。
     * 注意:screen_name的前面必须要要加"$"符号
     *
     * @return JSONObject
     * @throws JSONException JSONException
     */
    JSONObject getTrackProperties() throws JSONException;
}

当用户实现该接口时,SDK 会将 getTrackProperties 返回的属性(JSONObject类型)加入 $AppViewScreen 事件的属性中,作为用户访问该页面时的事件属性;SDK 会将 getScreenUrl 返回的字符串作为页面的 Url Scheme,记录在 $AppViewScreen 事件的 $url 属性中,并且当用户切换页面时,将前一个页面中的 Url Schema 作为当前页面的 $AppViewScreen 事件的 $referrer 属性。

例如:

public class OrderDetailActivity extends Activity implements ScreenAutoTracker {
    @Override
    public String getScreenUrl() {
        return "sensorsdata://page/order/detail?orderId=888888";
    }

    @Override
    public JSONObject getTrackProperties() throws JSONException {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("orderId", "888888");
        jsonObject.put("manufacturer", "sensorsdata");
        return jsonObject;
    }
}

2. 开启 Fragment 页面浏览事件的自动采集($AppViewScreen)

 //初始化 SDK 之后,开启自动采集 Fragment 页面浏览事件
SensorsDataAPI.sharedInstance().trackFragmentAppViewScreen();

如果不想使用自动采集的 Fragment 浏览页面,可以通过代码埋点在 tab 切换 Fragment 时触发页面浏览事件:

 //通过代码触发 Fragment 页面浏览事件
SensorsDataAPI.sharedInstance().trackViewScreen(fragment);

3. 通过代码 track 浏览页面事件($AppViewScreen)

public void trackViewScreen(String url, JSONObject properties)

此方法用于 Activity 内 切换页面的时候调用,用于记录 $AppViewScreen 事件.

url :页面的 url, 记录到 $url 字段中(如果不需要此属性,可以传 null )。

properties :页面的属性。

注意:为保证记录到的 $AppViewScreen 事件和 Auto Track 采集的一致,页面的属性中 需要传入 $title(页面的title) 、$screen_name (页面的名称,即 包名.类名)字段。

  try {
       JSONObject properties = new JSONObject();
       //记录打开 首页Fragment 的 $AppViewSceen 事件。
       properties.put("$title", "首页")
                 .put("$screen_name", "cn.sensorsdata.demo.HomeFragment");
       SensorsDataAPI.sharedInstance().trackViewScreen(null, properties);
  } catch (Exception e) {
       e.printStackTrace();
  }
//触发 Activity 的浏览页面事件
public void trackViewScreen(Activity activity)
//触发 Fragment 的浏览页面事件
public void trackViewScreen(Fragment fragment)

4. AlertDialog

对于 AlertDialog( android.app.AlertDialog、android.support.v7.app.AlertDialog),需要给 Dialog 设置 OwnerActivity,才能采集到 AlertDialog 所属页面 (Activity) 的信息(属性:$screen_name、$title)。

如果是调用dialog.show()显示dialog:

dialog.setOwnerActivity(activity);

如果是调用builder.show()显示dialog

builder.show().setOwnerActivity(activity);

5. 忽略某个页面或某些页面的事件

如果想忽略某个或某些页面的事件($AppClick、$AppViewScreen),可以使用如下方法:

//忽略单个页面
SensorsDataAPI.sharedInstance().ignoreAutoTrackActivity(MainActivity.class);

//忽略多个页面
List<Class<?>> classList = new ArrayList<>();
classList.add(MainActivity.class);
SensorsDataAPI.sharedInstance().ignoreAutoTrackActivities(classList);

6. 忽略某个类型控件的点击事件

如果想忽略某个控件类型及其子类控件的点击事件($AppClick),可以使用如下方法:

SensorsDataAPI.sharedInstance().ignoreViewType(Class viewType);

viewType 可以是 Android 常见的控件类型及自定义类型,如:CheckBox、RadioButton、Button、SwitchCompat、Spinner、TextView、ImageView、ImageButton、SeekBar、RatingBar、RadioGroup、ExpandableListView、Dialog、ListView、GridView、TabHost 等。

7. 忽略某个View的点击事件

如果要忽略某个 view 的点击事件($AppClick),比如某个 view 的点击事件对整个业务分析完全没有任何作用,或者自定义的密码输入键盘等,可以使用如下的方法忽略点击事件:

SensorsDataAPI.sharedInstance().ignoreView(View view);

8. 设置元素ID

为了有效的区分页面元素 (view),SDK 默认使用 android:id 的值作为点击事件的 $element_id 属性,如果元素没有设置 android:id 属性,或者设置的不符合要求,可以使用如下方法设置元素 ID:

SensorsDataAPI.sharedInstance().setViewID(View view, String viewID);

对于 Dialog,可以使用如下方法:

SensorsDataAPI.sharedInstance().setViewID(android.app.Dialog view, String viewID);

或

SensorsDataAPI.sharedInstance().setViewID(android.support.v7.app.AlertDialog view, String viewID);

注意 setViewID 的优先级高于 android:id。

9. 自定义元素属性

点击 view 时,如果在发送 $AppClick 事件时还需要添加其它属性,可以通过如下方法进行扩展:

SensorsDataAPI.sharedInstance(context).setViewProperties(View view, JSONObject properties);

当点击 view 后,发送 $AppClick 事件时,会把 properties 的内容带上。

注意:不要在 view 设置的点击函数内调用,ignoreView 、setViewID、setViewProperties 方法

  • 对于 ExpandableListView,可以通过 setViewProperties 方法对 item 所在的 view 设置扩展属性,也可以通过 Adapter 实现 SensorsExpandableListViewItemTrackProperties 接口来扩展属性。

package com.sensorsdata.analytics.android.sdk;

public interface SensorsExpandableListViewItemTrackProperties {
    /**
     * 点击 groupPosition、childPosition 处 item 的扩展属性
     * @param groupPosition
     * @param childPosition
     * @return
     * @throws JSONException
     */
    JSONObject getSensorsChildItemTrackProperties(int groupPosition, int childPosition) throws JSONException;

    /**
     * 点击 groupPosition 处 item 的扩展属性
     * @param groupPosition
     * @return
     * @throws JSONException
     */
    JSONObject getSensorsGroupItemTrackProperties(int groupPosition) throws JSONException;
}
  • 对于 ListView、GridView,可以通过 setViewProperties 方法对 item 所在的 view 设置扩展属性,也可以通过 Adapter 实现 SensorsAdapterViewItemTrackProperties 接口来扩展属性。

package com.sensorsdata.analytics.android.sdk;

public interface SensorsAdapterViewItemTrackProperties {
    /**
     * 点击 position 处 item 的扩展属性
     * @param position
     * @return
     * @throws JSONException
     */
    JSONObject getSensorsItemTrackProperties(int position) throws JSONException;
}

10. 注解 @SensorsDataIgnoreTrackAppViewScreen

忽略某个 Activity 或 Fragment 的页面浏览事件($AppViewScreen)

例如:忽略 DemoActivity 的页面浏览事件

//忽略 DemoActivity 的页面浏览事件
@SensorsDataIgnoreTrackAppViewScreen
public class DemoActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_demo);
    }
}

11. 注解 @SensorsDataTrackViewOnClick

如果你是使用 android:onclick 属性给 View 添加点击处理函数,此时你可以在处理函数上使用 @SensorsDataTrackViewOnClick 注解,在该函数执行时,SDK 会发 $AppClick 事件。

例如:

XML:

<Button
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="普通Button"
    android:onClick="buttonOnClick"
    android:textAllCaps="false" />

处理函数:

import com.sensorsdata.analytics.android.sdk.SensorsDataTrackViewOnClick;

@SensorsDataTrackViewOnClick
public void buttonOnClick(View v) {

}

12. 注解 @SensorsDataTrackEvent

对于一些简单的场景,比如当某一个方法执行时就 track 一个事件,可以在该方法上使用 @SensorsDataTrackEvent 注解。当该方法执行时,SDK 会 track 一个指定的事件。

例如:

@SensorsDataTrackEvent(eventName = "someEventName", properties = "{\"provider\":\"神策数据\",\"number\":100,\"isLogin\":true}")
public void someMethod() {

}

这样,每当函数 someMethod() 执行时,SDK 就会 track 一个事件,其中事件名称为 someEventName,属性有:

"provider":"神策数据",
"number":100,
"isLogin":true

13. 开启 React Native 页面控件的自动采集($AppClick)

//初始化SDK后,开启 RN 页面控件点击事件的自动采集
SensorsDataAPI.sharedInstance().enableReactNativeAutoTrack();

14. TODO

  • EditText

  • Banner

从 可以使用 trackFragmentAppViewScreen 方法开启 Fragment 页面浏览事件的自动采集:

开启了 Fragment 浏览页面的自动采集 ,可以通过 忽略 Fragment 所在 Activity 的页面浏览事件;如果某些 Fragment 的页面浏览事件也不想采集,也可以通过此注解来忽略掉。

从 开始也可以使用下面方法来触发浏览页面事件:

及以后的版本, 支持在初始化 SDK 之后,通过 enableReactNativeAutoTrack() 方法开启 RN 页面控件点击事件的自动采集。

1. 自定义页面信息
2. 开启 Fragment 页面浏览事件的自动采集
3. 通过代码 track 浏览页面事件
4. AlertDialog
5. 忽略某个页面或某些页面的事件
6. 忽略某个类型控件的点击事件
7. 忽略某个View的点击事件
8. 设置元素ID
9. 自定义元素属性
10. 注解 @SensorsDataIgnoreTrackAppViewScreen
11. 注解 @SensorsDataTrackViewOnClick
12. 注解 @SensorsDataTrackEvent
13. 开启 React Native 页面控件的自动采集
14. TODO
1.7.10
注解 @SensorsDataIgnoreTrackAppViewScreen
v1.7.9
1.7.14