第一次做手Q对接的项目。虽然只是一个静态页面,但是遇到的问题数不胜数。分享出来,做个记录。项目需求,做一个静态页面为APP导流,请求记录QQ号,准备后续分析,使用MTA统计页面访问量,页面必须可以分享。一:手Q的H5页面不支持正则化。考虑到只要采集到QQ号,将QQ号存入cookie,直接用js获取,然后异步上报回服务器,基本搞定。找到了手Q团队WEB端的研发咨询,如何获取QQ号,给了一段解析代码。代码如下:uin=uin?String(uin).replace('o0',''):'';uin=uin?String(uin).replace(/o+/g,''):'';好像连正则都不用自己写,直接用就行了。编码完成后,上传到服务器,在本地浏览器中测试。一切正常,但是放到手机QQ里,却获取不到QQ号。太奇怪了。js分析包后只执行了'o0'的替换,并没有执行后面的regex替换。没办法,只好重新修改,换成服务器解析,总算搞定了。其实还有一个问题,后面再说。二:每个APP都有自己的一套API,用于分享。一开始就是用手Q里的分享。从手Q分享,没有问题但是如果是二次分享,比如手Q分享到微信,再从微信分享到微信,这时候就需要用到微信的分享API。三:微信分享到QQ的API网上几乎没有我们前端提供的微信分享API。有发朋友圈、朋友圈、微博,但是没有分享到QQ。我用谷歌搜索了很长时间,但没有找到。只能根据之前的结构猜QQ怎么写了。我很幸运。几次之后,我做对了。//发送到QQWJ.on('menu:share:qq',function(){WJ.invoke('shareQQ',config_share,function(res){});});四:获取8位以下的QQ号如果不使用问题1中的正则,可以正常抓取,9位以上的QQ号,分析里面的数据,发现8位以下的QQ号有0在前面。查询文档发现腾讯的QQ号码规则是o+10位,不足10位自动补0,所以之前的正则化无法捕捉到,8位以下的号码。五:手机端分享API,iOS系统下无法获取标题。试运行阶段,发现iOS系统下的分享不能一直获取标题,安卓系统下是正常的。抓包后发现在iOS系统下分享时自动抓取中的内容,并没有读取name的内容。解决办法是让name和title的内容保持一致。六:在QQ上发链接,截图的图文描述总是不正确。正常情况是这样的,但是我们发出去之后,我们抓取的是在QQ上抓取的这样一个网页,第一次抓取后会缓存一段时间,我们有预发布环境,网址和官方环境一样,但是只能从内网访问,所以在QQ上传播后,QQ抓取外网,自然就出错了。找到手Q团队帮忙清除缓存,重新在QQ上发链接,一切正常。七:手Q和PCQQ不是同一个部门。我们以为一切都结束了。之前我们一直在手机上调试,一切正常,但是一个偶然的机会,我们把链接发到PC版QQ,发现链接还是不对,咨询了手Q团队后,才知道PC版QQ是另外一个团队。八:链接大小写我们给的链接格式是AbbCC,正常配置没有问题,但是有时候手Q会帮我们推广,链接会变成Abbcc或者abbcc,可以通过MTA解析,还好我提前处理了,才避免了这个问题。问题九:网页内的APP下载链接可能被屏蔽了。运行一段时间后,突然有一天,发现APP下载链接无法下载。抓包后发现已经被拦截了。咨询手Q团队和手Q推广链接有几种模式。修改运行配置后,正常下载。