Android神策全埋点中页面浏览增加自定义属性

页面浏览是产品在APP埋点中经常添加的需求,并且每个页面会新增很多特有属性。神策提供了所有页面全局埋点的方法,并且可以添加特有属性。

一、页面增加特有属性

1.初始化神策埋点

SAConfigOptions saConfigOptions = new SAConfigOptions(SA_SERVER_URL);
//开启全埋点浏览事件
saConfigOptions.setAutoTrackEventType(SensorsAnalyticsAutoTrackEventType.APP_VIEW_SCREEN);
SensorsDataAPI.startWithConfigOptions(context, saConfigOptions);   

2.指定页面增加特有属性

public class MainActivity extends AppCompatActivity implements ScreenAutoTracker {
	@Override
	public String getScreenUrl() {
     //看产品有没有单独规定url,没有就用默认getClass().getCanonicalName()
		return getClass().getCanonicalName();
	}

	@Override
	public JSONObject getTrackProperties() throws JSONException {
		JSONObject jsonObject = new JSONObject();
		jsonObject.put("key", "value");
		//返回 $title,会覆盖默认 $title 的值,$符号基本是神策预留字段
		jsonObject.put("$title", "Main");
		return jsonObject;
	}
}

二、每个页面都需增加字段怎么处理?

可以给每个Activity都增加代码可以完成每个页面都增加字段,但是这样做肯定不是很优雅。特别是当项目页面特别多的时候,很显然这样做不合理。我们可以把这些功能提到BaseActivity中。

1.在基类中实现ScreenAutoTracker

public abstract class BaseActivity extends AppCompatActivity implements ScreenAutoTracker {
   protected String SCPageType = null;
   protected JSONObject SCJsonObject = null;

    /**
     * 返回自定义属性集合
     *
     * @params: null
     * @return: JSONObject
     */
    @Override
    public JSONObject getTrackProperties() throws JSONException {
        if (SCJsonObject == null) SCJsonObject = new JSONObject();
        SCJsonObject.put("page_type", getScreenUrl());
        //上一层url
        SCJsonObject.put("referrer_page_type", SensorsDataAPI.sharedInstance().getLastScreenUrl());
        return SCJsonObject;
    }
    
    /**
     * 返回当前页面的Url,用作下个页面的referrer
     *
     * @params: null
     * @return: String
     */
    @Override
    public String getScreenUrl() {
        //当子类未设置SCPageType时,采用子类默认类名字段
        if (SCPageType == null) SCPageType = getClass().getCanonicalName();
        return SCPageType;
    }
}

2.子类可修改参数

public class MainActivity extends BaseActivity implements ScreenAutoTracker {
	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //设置每个页面特有字段
        SCPageType = "services_list";
        try {
            if (SCJsonObject == null) SCJsonObject = new JSONObject();
            SCJsonObject.put("key", "value");
       } catch (JSONException e) {
            e.printStackTrace();
       }
    }
 }

有问题和建议欢迎大家指出~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值