属性插件化
属性插件化用于修改埋点事件属性的高级功能,用户可通过属性插件化功能实现对指定事件(或所有事件)的属性进行新增、修改和删除。
接口介绍
SDK 提供了 registerPropertyPlugin 方法,通过该方法传入自定义的属性插件对象给指定的事件添加、修改或删除属性。
自定义属性插件对象介绍:
方法名 | 描述 | 示例 |
---|---|---|
properties(data) | 用于对属性进行修改,data 为发送前的完整数据。 data 包括 SDK 采集的所有数据类型: profile_set、 profile_set_once、 profile_append、 profile_increment、 track、 track_signup 。 可配置该方法中对待发送数据 data 进行属性的添加、删除、修改操作。 |
|
isMatchedWithFilter(data) | 用于对数据进行筛选,data 为发送前的完整数据。 同上面 data 包括所有数据类型。 如果配置了该方法,仅当该方法返回 true 时,配置的 properties 方法才会得到执行。 如果不配置该方法,则配置的 properties 方法始终执行。 |
|
使用示例
常用方法:修改事件名为 $MPViewScreen 下的 $title 属性
sensors.registerPropertyPlugin({ isMatchedWithFilter:function(data){ return data.event === "$MPViewScreen"; } properties:function(data){ data.properties['$title'] = 'http://xxx'; } });
常用方法:删除所有事件中的 platform 属性
sensors.registerPropertyPlugin({ isMatchedWithFilter:function(data){ return data.type === 'track'; } properties:function(data){ delete data.properties['platform']; } });
注意:需要先做事件筛选,再做属性修改。因为 profile 等类型的数据也是可以被修改的。
sensors.registerPropertyPlugin({ isMatchedWithFilter:function(data){ return data.type.slice(0, 7) === 'profile'; } properties:function(data){ delete data.properties['aaa'] = 'bbb'; } });
对所有类型数据,修改属性值。注意:这种用法一般情况下是错误的,会导致所有数据(包括 profile 等)都被修改,引发意想不到的情况
sensors.registerPropertyPlugin({ properties:function(data){ data.properties['aaa'] = 'bbb'; } });
直接在 properties 里进行筛选和属性修改也是可以的
sensors.registerPropertyPlugin({ properties:function(data){ if(data.event === '$MPViewScreen'){ data.properties['$title'] = 'http://xxxx'; } } });