mta html5 统计接口,使用MTA HTML5统计API来分析数据

在开发个人博客的时候,用到了腾讯移动分析(MTA),相比其他数据统计平台来说我喜欢她的简洁高效,易上手,同时文档也比较全面,提供了数据接口供用户调用。

在看了MTA演示Demo和官方文档后,我就决定使用 .NET Core将其HTML5统计API进行封装,以供博客直接调用,省去各种鉴权生成sign的操作。

首先需要在MTA官网进行HTML5应用创建,当然她还支持小程序和移动App。

fc528d5a9de9f4b7dfe79e3883bdd508.png

然后就可以看到如上图的应用管理界面,如果你不打算使用其API接口,直接拿到统计代码嵌入在自己网站中即可,不出意外10分钟左右即可查看网站部分指标的实时数据,次日可以查看昨日的全部数据。

接下来继续,在调用MTA接口之前需要先生成sign,

双方维护同一份私钥,在发起请求的时候,发起方(合作方)将当前的请求参数数组,按照key值进行排序,然后'key=value'拼接到加密串后,进行md5的编码。接收方以同样的处理方式,对ts小于或等于30分钟的请求进行处理,sign一致则合法,否则失败。

有了这段算法描述,利用C#代码实现如下:

///

/// 生成sign

///

///

///

public static string GgenerateSign(this Dictionary keyValues)

{

keyValues.Add("app_id", MtaConfig.App_Id);

IDictionary sortedParams = new SortedDictionary(keyValues);

var iterator = sortedParams.GetEnumerator();

var sb = new StringBuilder();

while (iterator.MoveNext())

{

var key = iterator.Current.Key;

var value = iterator.Current.Value;

if (key.IsNotNullOrEmpty() && value.IsNotNullOrEmpty())

{

sb.Append(key).Append("=").Append(value);

}

}

return (MtaConfig.SECRET_KEY + sb.ToString()).Md5();

}

将参数放入一个字典,并按照key值进行排序。因为所有接口都需要参数app_id,所以将其默认添加进去,不在额外当做参数。

.Md5()是一个扩展方法,将字符串按照MD5方式加密

拿到sign后就可以调用接口了,因为是封装,那么将所有接口都保存为静态变量,代码如下

#region 应用趋势

///

/// 应用历史趋势

/// 每天的pvuvvviv数据

///

public static string Ctr_core_data = "https://mta.qq.com/h5/api/ctr_core_data";

///

/// 应用实时小时数据

/// 当天每小时的pvuvvviv数据

///

public static string Ctr_realtime = "https://mta.qq.com/h5/api/ctr_realtime/get_by_hour";

///

/// 应用心跳数据

/// 当前pvuvvviv心跳数据数据

///

public static string Ctr_realtime_heartbeat = "https://mta.qq.com/h5/api/ctr_realtime/heartbeat";

#endregion

#region 访客分析

///

/// 实时访客

/// 在24小时内的实时访客信息

///

public static string Ctr_user_realtime = "https://mta.qq.com/h5/api/ctr_user_realtime";

///

/// 新老访客比

/// 按天查询当天新访客与旧访客的数量

///

public static string Ctr_user_compare = "https://mta.qq.com/h5/api/ctr_user_compare";

///

/// 用户画像

/// 查询用户画像数据,包含性别比例、年龄分布、学历分布、职业分布,数据为pv量

///

public static string Ctr_user_portrait = "https://mta.qq.com/h5/api/ctr_user_portrait";

#endregion

#region 客户端分析

///

/// 地区数据

/// 按天查询地区的pvuvvviv量

///

public static string Ctr_area = "https://mta.qq.com/h5/api/ctr_area/get_by_area";

///

/// 省市数据

/// 按天查询省市下有流量的城市的pvuvvviv量

///

public static string Ctr_area_province = "https://mta.qq.com/h5/api/ctr_area/get_by_province";

///

/// 运营商

/// 按天查询运营商的pvuvvviv量

///

public static string Ctr_operator = "https://mta.qq.com/h5/api/ctr_operator";

///

/// 终端属性列表

/// 按天查询对应属性的终端信息数据

///

public static string Ctr_client_para = "https://mta.qq.com/h5/api/ctr_client/get_by_para";

///

/// 终端信息

/// 按天查询终端信息数据

///

public static string Ctr_client_content = "https://mta.qq.com/h5/api/ctr_client/get_by_content";

#endregion

#region 页面分析

///

/// 页面排行-当天实时列表

/// 查询当天所有url的pvuvvviv数据

///

public static string Ctr_page_realtime = "https://mta.qq.com/h5/api/ctr_page/list_all_page_realtime";

///

/// 页面排行-离线列表

/// 按天查询所有url的pvuvvviv数据

///

public static string Ctr_page_offline = "https://mta.qq.com/h5/api/ctr_page/list_all_page_offline";

///

/// 页面排行-指定查询部分url

/// 按天查询url的pvuvvviv数据。

///

public static string Ctr_page_url = "https://mta.qq.com/h5/api/ctr_page";

///

/// 性能监控

/// 按天查询对应省市的访问延时与解析时长

///

public static string Ctr_page_speed = "https://mta.qq.com/h5/api/ctr_page_speed";

///

/// 访问深度

/// 按天查询用户访问深度

///

public static string Ctr_page_depth = "https://mta.qq.com/h5/api/ctr_depth";

#endregion

#region 来源分析

///

/// 外部链接

/// 按天查询外部同站链接带来的流量情情况

///

public static string Ctr_source_out = "https://mta.qq.com/h5/api/ctr_source_out";

///

/// 入口页面

/// 按天查询用户最后访问的进入次数与跳出率

///

public static string Ctr_page_land = "https://mta.qq.com/h5/api/ctr_page_land";

///

/// 离开页面

/// 按天查询最后访问页面的离次数

///

public static string Ctr_page_exit = "https://mta.qq.com/h5/api/ctr_page_exit";

#endregion

#region 自定义事件

///

/// 自定义事件

/// 按天查询自定义事件的pvuvvviv

///

public static string Ctr_custom = "https://mta.qq.com/h5/api/ctr_custom";

#endregion

#region 渠道效果统计

///

/// 渠道效果统计

/// 按天查询渠道的分析数据

///

public static string Ctr_adtag = "https://mta.qq.com/h5/api/ctr_adtag";

#endregion

接下来对照文档生成URL的查询参数,然后访问接口拿到返回数据

///

/// 生成URL查询参数

///

///

///

public static string GgenerateQuery(this Dictionary keyValues)

{

var sign = keyValues.GgenerateSign();

var query = "?";

keyValues.ForEach(x =>

{

query += $"{x.Key}={x.Value}&";

});

return $"{query}sign={sign}";

}

///

/// 获取MTA接口返回数据

///

///

///

public static async Task GetMTAData(this Dictionary keyValues, string api)

{

var url = $"{api}{keyValues.GgenerateQuery()}";

// HWRequest()和HWRequestResult()是扩展方法,可以选择自己熟悉HTTP请求方法

var hwr = url.HWRequest();

string result = hwr.HWRequestResult();

return await Task.FromResult(result);

}

到这里基本上就结束了,只需对照MTA文档传入对应的参数即可拿到返回的数据了。

以其中一个接口为例,应用历史趋势,获取每天的pv、uv、vv、iv数据

///

/// 应用历史趋势

/// 每天的pvuvvviv数据

///

/// 开始时间(Y-m-d)

/// 结束时间(Y-m-d)

/// 查询指标(pv,uv,vv,iv),使用“,”间隔

///

public async Task Ctr_core_data(string start_date, string end_date, string idx)

{

var keyValues = new Dictionary

{

{ "start_date", start_date },

{ "end_date", end_date },

{ "idx", idx }

};

return await keyValues.GetMTAData(MtaConfig.Ctr_core_data);

}

在controller中进行调用

///

/// 应用历史趋势

/// 每天的pvuvvviv数据

///

/// 开始时间(Y-m-d)

/// 结束时间(Y-m-d)

/// 查询指标(pv,uv,vv,iv),使用“,”间隔

///

[HttpGet]

[Route("ctr_core_data")]

public async Task Ctr_core_data(string start_date, string end_date, string idx)

{

var result = await _mtaService.Ctr_core_data(start_date, end_date, idx);

return result.DeserializeFromJson();

}

查询结果看下图

73374f51f4b160e4486fe1c0db59a333.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值