1.2.4.2 HTTP数据

优质
小牛编辑
140浏览
2023-12-01

本方案适用于不方便在App产品内直接集成Hubble SDK,但是对数据实时性要求又比较高的场景

具体的方式是,由App开发者在App运行时按照 “事件-用户” 模型组织数据并通过Hubble开放的http接口主动推送数据。目前,这种方式仅支持Android和iOS应用

1.1. 定义数据

事件数据

字段名字段描述数据类型是否必填
userId用户 IDstring必填
deviceUdid设备 IDstring非必填
dataType数据报文类型(默认外部事件 e)string必填
sdkTypesdk类型 (Android / iOS)string必填
eventId事件 IDstring必填
time事件发生时间(绝对毫秒)long必填
costTime事件耗时(毫秒)int非必填
appKey应用标识string必填
sessionUuid会话 IDstring非必填
ip客户端ipstring非必填
country国家string非必填
region省份string非必填
city城市string非必填
appVersionapp版本string非必填
appChannelapp渠道string非必填
devicePlatform设备平台string非必填
deviceOs操作系统string非必填
deviceOsVersion操作系统版本string非必填
deviceModel设备机型string非必填
deviceManufacturer设备制造商string非必填
deviceResolution设备分辨率string非必填
useWifi是否使用wifistring非必填
screenWidth分辨率(宽)string非必填
screenHeight分辨率(高)string非必填
deviceCarrier网络运营商string非必填
networkType联网类型string非必填
localeLanguage本地语言string非必填
category事件类别string非必填
label事件标签string非必填
attributes事件自定义属性map非必填
// 自定义事件demo数据
{
    "userId": "18921895133",
    "deviceUdid": "5cc9531c48a0e12a7143c13bee058166e9e9d8e1",
    "dataType": "e",
    "sdkType": "iOS",
    "eventId": "clickButton",
    "time": 1434556935000,
    "costTime": 20,
    "appKey": "MA-XXXX-437494F370B3",
    "sessionUuid": "1234-342423-232",
    "ip": "172.0.0.1", // 用于解析下面的国家-省份-城市信息 最好填入
    "country": "中国",
    "region": "浙江",
    "city": "杭州",
    "appVersion": "3.2",
    "appChannel": "appstore",
    "devicePlatform": "iPad",
    "deviceOs": "iOS",
    "deviceOsVersion": "7.0",
    "deviceModel": "iPhone6",
    "deviceManufacturer": "Apple",
    "deviceResolution": "640x960",
    "userWifi": "true",
    "screenWidth": "640",
    "screenHeight": "960",
    "deviceCarrier": "中国移动",
    "networkType": "4G",
    "localeLanguage": "en",
    "category": "首页",
    "label": "我喜欢的",
    "attributes": {
        "userfrom": "baidu",
        "lastPage": "个人信息页"
    }
}

用户数据

字段名字段描述数据类型是否必填
userId用户IDstring必填
$account用户账号string非必填
$realName用户姓名string非必填
$birthday用户生日string非必填
$age用户年龄int非必填
$gender用户性别string非必填
$country常用地址-国家string非必填
$province常用地址-省份string非必填
$city常用地址-城市string非必填
attributes用户自定义属性map非必填
// 用户demo数据 通过da_user_profile事件组织数据
{
    "eventId": "da_user_profile",
    "dataType": "ie",
    "appKey": "MA-TF52-SDDFE56U1233",
    "userId": "ABCDEF123456789",
    "attributes": {
        "$userProfile": {
            "$type": "profile_set" // 必带 说明是用户属性
            "$account": "hubbletest@163.com", // $开头的字段为公共字段
            "$realName": "王磊",
            "$birthday": "1990-09-10",
            "$age": 28,
            "$gender": "male",
            "$$country": "中国",
            "$province": "浙江",
            "$city": "杭州",
            "vip": "黄金",  // 非$开头字段为业务自定义字段
            "nickname":"小王王"
        }
    }
}

说明: 1. 事件数据和用户数据均定义成标准json格式,并且key区分大小写,请和上述文档保持一致 2. 最终发送数据时,json数据需要进行base64编码 3. 事件-用户数据字段说明中的非必填字段,建议开发同学在条件允许情况下竟可能的填入,方便后续在Hubble的各个分析功能中使用 4. 用户数据是通过da_user_profile事件进行组织的,所有的用户属性都设置到attrubutes.$userProfile字段中,$开头的字段为Hubble公共字段,解析时如果遇到$开头的非公共字段则直接丢弃。目前只支持基础类型字段,不支持maparray 5. 虽然本方案未直接使用SDK采集数据,但是仍然需要开发方发送sdkType字段,默认Android / iOS 6. 在定义数据时,请尽量使用公共字段,公共字段不满足业务需求时才自定义属性

1.2. 推送接口

数据发送接口说明

接口地址:https://hubble.netease.com/track/s/?data=base64_data

唯一参数:data

发送方式: get

请求头部:增加两个参数
    1. X-SHA1-APPKEY  APPKEY的SHA1加密值
    以java发送为例:
    httpGet.addHeader("X-SHA1-APPKEY", SHA1Util.encryptSHA(appkey));
    具体sha1加密,自行参考实现

    2. X-CLIENT-IP
    移动客户端IP,获取不到可以设置为空

发送数据demo

https://xxx.xxx.com/track/s/?data=eyJldmVudElkIjoidGhyZWFkLXRlc3QiLCJkYXRhVHlwZSI6ImUiLCJpcCI6IjEyMy4xMjMuMTIzLjEyMyIsInNka1R5cGUiOiJzZXJ2ZXItamF2YSIsImF0dHJpYnV0ZXMiOnsiJHRpbWUiOjE1MDE2NjUwMjk5MTYsIm9zIjoid2luZG93cyIsIm9zVmVyc2lvbiI6IjEwLjEuMyIsImlwIjoiMTIzLjEyMy4xMjMuMTIzIiwiQ2hhbm5lbCI6ImJhaWR1In0sInNka1ZlcnNpb24iOiIxLjAuMCIsImFwcEtleSI6Ik1BLTZSV0UtUVdIS0hFS0RGMTIiLCJ0aW1lIjoxNTAxNjY1MDI5OTE2LCJ1c2VySWQiOiJsaWJ1eWktdGVzdCJ9

注意:

如果你最终选择这种发送方式,请一定先与Hubble开发人员进行联系,为你进行详细说明