属性插件化
版本要求
微信小程序版本需 1.19.4 及以上版本
属性插件化用于修改埋点事件属性的高级功能,用户可通过属性插件化功能实现对指定事件(或所有事件)的属性进行新增、修改和删除。
接口介绍
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'; } } });
埋点数据的加密功能
为了加强埋点数据的安全性,神策分析支持对埋点数据进行加密,并以密文的形式对数据进行存储和发送。
- SDK 端使用加密插件
参考插件 encryption 埋点数据加密
- SDK 做如下配置
sensors.init({
storage_prepare_data_key:''//本地存储 key 值,字符串格式
})
- 本功能需要服务端的配合,可以联系神策客户成功/项目经理协助开通服务端解密功能。
- 加密插件下线时注意事项:
- 主 SDK 版本回退至 SDK 版本号 >= 1.14.27 版本时 ,只下线加密插件。
- 主 SDK 版本要回退到 1.14.27 以下版本时,下线加密插件,需要修改配置 storage_prepare_data_key
- 开启加密后,如果服务端不支持解密,数据无法入库,会丢失,埋点管理中不会有报错
版本要求
- 微信小程序 SDK v.14.27 及以上版本
- Edge v0.3.0及以上的版本
- SDF 2.3及以上的版本
支持动态禁用/启用 API
// 禁用 API 执行
sensors.disableSDK()
// 恢复 API 执行
sensors.enableSDK()
注意:必须在 init 后调用,详细参考 disableSDK
- 此接口只有微信小程序 SDK 支持
对发送的数据进行自定义加密
如果需要对发送的数据进行国密等格式的自定义加密,可以使用 自定义加密插件