第一次作和手Q对接的项目,虽然只是作一个静态页面,可是遇到的问题无数,分享出来,作个记录。
项目需求,作一个静态页面,为APP导流,要求记录QQ号,为后续分析准备,页面访问量使用MTA统计,页面要可以分享。前端
考虑到只要收集QQ号码,QQ号码存在cookie里面,用js直接获取,而后异步上报回服务端,基本就搞定。
找到手Q团队WEB端的研发咨询怎么获取QQ号,给我了一段解析的代码。
代码以下:浏览器
uin = uin ? String(uin).replace('o0', '') : ''; uin = uin ? String(uin).replace(/o+/g, '') : '';
看来连正则都不用本身写了,直接拿去用。缓存
编码完成后,上传服务器,在本地浏览器中测试一切正常,可是放到手Q中,怎么也获取不到QQ号码,太奇怪了,抓包后分析,js只执行了替换'o0',并无执行下面的正则替换。服务器
没有办法只能从新修改,换成服务器解析,总算搞定,其实还有一个问题,后续再说。微信
一开始就使用了手Q里面的分享。cookie
<meta itemprop="name" content="标题"> <meta itemprop="description" content="描述"> <meta itemprop="image" content="图片">
从手Q里面分享出去,没有任何问题可是若是是二次分享,好比,手Q分享到微信,再从微信分享到微信,这个时候就须要使用微信的分享API。异步
微信分享的API是咱们前端给的,里面有发给好友,朋友圈,微博,惟独没有分享到QQ。用Google查了半天,一直没有找到,只能根据前面的结构,猜想分享到QQ怎么写,运气还不错,几回以后居然对了。测试
// 发送到QQ WJ.on('menu:share:qq', function () { WJ.invoke('shareQQ', config_share, function (res) { }); });
使用问题一里面的正则,可以正常捕获,9位以上的QQ号,内侧的时候分析数据,发现8位如下的QQ都出现了前面有0的状况。
查询文档后发现,腾讯的QQ号规则是o+10位,不满10位的自动补0,因此前面的正则捕获不到,8位如下的。ui
试运行阶段,发现iOS下分享老是获取不到标题,可是安卓下倒是正常的,抓包后发现,iOS下分享的时候自动抓取<title>里面的内容,并不会去读取name的内容,解决办法,保持name和title的内容一致。编码
正常状况是这样的
可是咱们发出去后抓取的是这样的
QQ上抓取网页,第一次抓取后会一直缓存一段时间,咱们有一个预发布环境,网址是和正式环境同样,可是只能内网访问,因此在QQ上传播以后,QQ抓取的是外网的,天然出现了错误。找到手Q的团队帮忙清理了下缓存,再次在QQ上发送连接一切正常。
原觉得这样就结束了,咱们以前一直在手机上调试,一切正常,可是一次偶然的机会把连接发送都PC版的QQ上,发现连接依旧是错的,咨询手Q的团队,才知道PC版的QQ是另一个团队。
咱们给出的连接格式是AbbCC的样子,正常配置的是没有问题的,可是有的时候手Q会帮咱们推广,连接的样子会变成Abbcc或者abbcc,经过MTA分析出来,还好我提早作了处理,这个问题算是躲过了。
在运行了一段时间以后,忽然某天发现APP的下载连接不能下载了,抓包以后,发现被拦截了,咨询手Q团队,手Q的推广连接有几种模式,修改运营配置后,正常下载。