微信公众号用位置认识用户之数据收集
微信崛起让各路大号(商家)和粉丝(用户)在微信平台迅速集结,短时间内出现了动辄百万粉丝的公众号。像《罗辑思维》、《晓松奇谈》、《吴晓波频道》这样的自媒体早已坐拥百万粉丝。粉丝们在享受着各种号提供的内容、商品、精神共鸣的同时,也贡献着海量的用户数据,这其中就包含位置信息。
如果你是微信公众号经营者,你一定会关心用户在什么时间、什么地点访问了微信公众号。用户位置构成用户活动轨迹,通过这些轨迹可以推断出用户在什么地方工作,住在什么档次的小区,经常在哪消费,消费能力如何...
那么该如何收集这些位置数据呢?虽然微信平台能帮助公众号收集用户位置,要把这些数据接收、存储、可视化、分析,依然要做不少工作。这里提供一种通过GeoHey平台的简单实现方式。如下图:
#geohey
app.ak={geohey ak}
app.data.uid={geohey data uid}
app.push.url=https://geohey.com/s/data/{geohey data uid}/add?ak={geohey ak}
#wx
wx.appid={weixin appid}
wx.secret={weixin secret}
wx.token.url=https://api.weixin.qq.com/sns/oauth2/access_token?code=%s&grant_type=authorization_code&appid={weixin appid}&secret={weixin secret}
wx.userinfo.url=https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s&lang=zh_CN
核心代码如下:protected boolean pushDataToGeoHey(String openId, double x, double y, String createTime) {
Form form = new Form();
Map feature = new HashMap();
feature.put("geom", new double[] { x, y });
Map attrs = new HashMap();
attrs.put("open_id", openId);
attrs.put("x", x);
attrs.put("y", y);
attrs.put("visit_at", createTime);
feature.put("attrs", attrs);
String json = JsonUtils.toJson(feature);
form.param("feature", json);
String url = AppContext.getInstance().getConfig("app.push.url");
Client client = ClientBuilder.newClient();
WebTarget wt = client.target(url);
Response resp = wt.request(MediaType.APPLICATION_JSON_TYPE).post(
Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED));
String result = JerseyUtils.readStringAndClose(resp, client);
Map map = JsonUtils.readMap(result);
Object code = map.get("code");
if (code != null && code.toString().equals("0")) {
return true;
}
return false;
}
#####3、微信推送位置信息到GeoHey
在微信公众号中开通开发者模式。修改服务器配置,如下图:
GeoHey是一个开放的平台。基于GeoHey API,可以实现多种场景的应用。GeoHey API请参考博文GeoHey API概述