数据保护
2018年5月21日起,GrowingIO在Web、Android和iOS SDK中提供了以下的API供开发者调用满足客户网站或移动应用符合欧盟区的《一般数据保护条例》(GDPR)。
GrowingIO SDK提供默认是否开启数据采集的配置项
GrowingIO SDK提供关闭或开启全局数据采集的接口,开发者可在APP中任何场景时调用该接口
GrowingIO SDK提供获取该设备的设备ID接口,开发者可配合数据侧提供的接口删除或导出该设备的行为数据
Web JS
全局配置, 可以放到send之后
关闭或开启全局数据采集:
// 停止采集数据 window.gio('config',{"dataCollect": true}); // 全局配置, 可以放到send之后 // 采集数据 (默认) window.gio('config',{"dataCollect": false});
获取访问用ID:
window.gio('getVisitUserId'); // 放在send之后
样例:
// 停止采集数据 window.gio('config',{"dataCollect": true}); // 全局配置, 可以放到send之后 //采集数据 (默认) window.gio('config',{"dataCollect": false}); // 获取访问用户ID window.gio('getVisitUserId'); // 放在send之后
Android
全局配置项:
disableDataCollect()
关闭或开启全局数据采集:
// 停止采集数据 GrowingIO.getInstance().disableDataCollect(); // 采集数据 (默认) GrowingIO.getInstance().enableDataCollect();
获取访问用户ID:
GrowingIO.getInstance().getVisitUserId();
样例:
GrowingIO.startWithConfiguration(this, new Configuration() .disableDataCollect() // 停止采集数据 .useID() .trackAllFragments()); // 停止采集数据 GrowingIO.getInstance().disableDataCollect(); // 采集数据 GrowingIO.getInstance().enableDataCollect(); // 获取访问用户ID GrowingIO.getInstance().getVisitUserId();
iOS
全局配置项(无)
关闭或开启全局数据采集:
disableDataCollect enableDataCollect
获取访问用户ID:
getVisitUserId
样例:
// 停止采集数据 [Growing disableDataCollect]; // 采集数据 (默认) [Growing enableDataCollect]; // 获取设备ID NSString *viId = [Growing getVisitUserId];
删除原始数据
为符合 GDPR 规范,GrowingIO 提供删除用户原始数据的功能。
visitUserId 是 GrowingIO SDK 生成的 cookie,您可以从导出的原始数据中获得。
删除用户数据后,该部分用户的细节数据(包括用户细查数据、以该部分用户ID做数据查询) 都不会保留在GrowingIO平台;但汇总数据(比如 "访问用户量" )不会受影响。
汇总数据不受影响的原因:GrowingIO收到该用户数据后启动汇总数据计算,这个过程是不可逆的。删除用户数据请求是在用户数据发送至GrowingIO之后的操作,该请求不会影响前置的汇总数据计算。请您知晓,汇总数据不受影响跟GDPR的要求没有任何相悖。
为防止误传和恶意攻击,GrowingIO服务器会对收到的每条数据做校验,因此需要在query参数中提供校验码auth。校验码生成代码见下方示例,其中的keyArray 为visitUserId,一次性上传多条时,使用逗号隔开,如上方示例中,keyArray为abcdef,bcdefg
Java public String authToken(String projectKeyId, String secretKey, String keyArray) throws Exception { String message = "projectId="+projectKeyId+"&visitUserId="+keyArray; Mac hmac = Mac.getInstance("HmacSHA256"); hmac.init(new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256")); byte[] signature = hmac.doFinal(message.getBytes("UTF-8")); return Hex.encodeHexString(signature); }
删除用户原始数据。
https://data.growingio.com/{ai}/deleteVisitor?auth={auth_token}
POST
参数说明
请求头参数 | 类型 | 是否必传 | 说明 |
Access-Token | string | 是 | Public Key |
Content-Type | string | 否 | application/json |
路径参数 | 类型 | 是否必传 | 说明 |
ai | string | 是 | 项目ID。 |
查询参数 | 类型 | 是否必传 | 说明 |
auth | string | 是 | 针对每条数据独立生成的认证。 |
body参数 | 类型 | 是否必传 | 说明 |
visitUserId | array | 是 | 用户ID。 |
body示例
{ "visitUserId":["abcdef","bcdefg",...] }