资讯专栏INFORMATION COLUMN

研发手Q推广遇到的一系列问题

Soarkey / 2097人阅读

摘要:第一次做和手对接的项目,虽然只是做一个静态页面,但是遇到的问题无数,分享出来,做个记录。项目需求,做一个静态页面,为导流,要求记录号,为后续分析准备,页面访问量使用统计,页面要能够分享。

第一次做和手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, "") : "";

看来连正则都不用自己写了,直接拿去用。

编码完成后,上传服务器,在本地浏览器中测试一切正常,但是放到手Q中,怎么也获取不到QQ号码,太奇怪了,抓包后分析,js只执行了替换"o0",并没有执行下面的正则替换。

没有办法只能重新修改,换成服务器解析,总算搞定,其实还有一个问题,后续再说。

二:每个APP的分享都有一套自己的API

一开始就使用了手Q里面的分享。



从手Q里面分享出去,没有任何问题但是如果是二次分享,比如,手Q分享到微信,再从微信分享到微信,这个时候就需要使用微信的分享API。

三:微信分享到QQ的API网上几乎没有

微信分享的API是我们前端给的,里面有发给好友,朋友圈,微博,唯独没有分享到QQ。用Google查了半天,一直没有找到,只能根据前面的结构,猜测分享到QQ怎么写,运气还不错,几次之后竟然对了。

// 发送到QQ
WJ.on("menu:share:qq", function () {
    WJ.invoke("shareQQ", config_share, function (res) {
    });
});
四:8位以下的QQ号获取不到

使用问题一里面的正则,能够正常捕获,9位以上的QQ号,内侧的时候分析数据,发现8位以下的QQ都出现了前面有0的情况。
查询文档后发现,腾讯的QQ号规则是o+10位,不满10位的自动补0,所以前面的正则捕获不到,8位以下的。

五:手机的分享API,在iOS系统下获取不到标题

试运行阶段,发现iOS下分享总是获取不到标题,但是安卓下却是正常的,抓包后发现,iOS下分享的时候自动抓取里面的内容,并不会去读取name的内容,解决办法,保持name和title的内容一致。</p> <b>六:在QQ上发送链接,抓取的图文描述一直不正确</b> <p>正常情况是这样的<br><script type="text/javascript">showImg("https://segmentfault.com/img/bVTbe1?w=293&h=144");</script></p> <p>但是我们发出去后抓取的是这样的<br><script type="text/javascript">showImg("https://segmentfault.com/img/bVTbfm?w=294&h=130");</script></p> <p>QQ上抓取网页,第一次抓取后会一直缓存一段时间,我们有一个预发布环境,网址是和正式环境一样,但是只能内网访问,所以在QQ上传播之后,QQ抓取的是外网的,自然出现了错误。找到手Q的团队帮忙清理了下缓存,再次在QQ上发送链接一切正常。</p> <b>七:手Q和PC的QQ不是一个部门</b> <p>原以为这样就结束了,我们之前一直在手机上调试,一切正常,但是一次偶然的机会把链接发送都PC版的QQ上,发现链接依旧是错的,咨询手Q的团队,才知道PC版的QQ是另外一个团队。</p> <b>八:链接的大小写</b> <p>我们给出的链接格式是AbbCC的样子,正常配置的是没有问题的,但是有的时候手Q会帮我们推广,链接的样子会变成Abbcc或者abbcc,通过MTA分析出来,还好我提前做了处理,这个问题算是躲过了。</p> <b>问题九:网页内部的APP下载链接可能会被拦截</b> <p>在运行了一段时间之后,突然某天发现APP的下载链接不能下载了,抓包之后,发现被拦截了,咨询手Q团队,手Q的推广链接有几种模式,修改运营配置后,正常下载。</p> </div> <div class="mt-64 tags-seach" > <div class="tags-info"> <a style="width:120px;" title="GPU云服务器" href="https://www.ucloud.cn/site/product/gpu.html">GPU云服务器</a> <a style="width:120px;" title="云服务器" href="https://www.ucloud.cn/site/active/kuaijiesale.html?ytag=seo">云服务器</a> <a style="width:120px;" title="使用遇到问题" href="https://www.ucloud.cn/yun/tag/shiyongyudaowenti/">使用遇到问题</a> <a style="width:120px;" title="布局遇到的问题" href="https://www.ucloud.cn/yun/tag/bujuyudaodewenti/">布局遇到的问题</a> <a style="width:120px;" title="winform?开发遇到问题" href="https://www.ucloud.cn/yun/tag/winform?kaifayudaowenti/">winform?开发遇到问题</a> <a style="width:120px;" title="ios10遇到问题" href="https://www.ucloud.cn/yun/tag/ios10yudaowenti/">ios10遇到问题</a> </div> </div> <div class="entry-copyright mb-30"> <p class="mb-15"> 文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。</p> <p>转载请注明本文地址:https://www.ucloud.cn/yun/25670.html</p> </div> <ul class="pre-next-page"> <li class="ellipsis"><a class="hpf" href="https://www.ucloud.cn/yun/25669.html">上一篇:最简单易懂的laravel事件,这个功能非常的有用</a></li> <li class="ellipsis"><a class="hpf" href="https://www.ucloud.cn/yun/25671.html">下一篇:PHP如何更好的利用PHPstorm的自动提示</a></li> </ul> </div> <div class="about_topicone-mid"> <h3 class="top-com-title mb-0"><span data-id="0">相关文章</span></h3> <ul class="com_white-left-mid atricle-list-box"> <li> <div class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="https://www.ucloud.cn/yun/119350.html"><b>测试管理之项目软件测试风险管理实践</b></a></h2> <p class="ellipsis2 good">摘要:在软件测试活动中,作为一名测试人员有没有遇到过这样的场景,在测试一个特性或者制定一份测试方案时,往往会想着进行简单测试做简单设计,认为这个场景出现的概率太低,几乎不可能会存在,不测了实际应用时不可能会有这么大的用户量, ...</p> <div class="com_white-left-info"> <div class="com_white-left-infol"> <a href="https://www.ucloud.cn/yun/u-84.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/00/small_000000084.png" alt=""><span class="layui-hide64">用户84</span></a> <time datetime="">2021-09-07 09:58</time> <span><i class="fa fa-commenting"></i>评论0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="https://www.ucloud.cn/yun/100331.html"><b>一篇文章了解H5打开APP的诸多方案</b></a></h2> <p class="ellipsis2 good">摘要:流量封装渠道微信手和微博等流量入口为了保证流量不流失,对和原生的唤起方案做了屏蔽和封装。不过这种方案已经被微信给封杀了。总结本文泛泛的总结了市面上常见的唤起方案,罗列了它们的优缺点。 其实H5打开APP本来应该是一件很简单的事,无非是在H5页面上调用一个协议或者接口将APP打开嘛。但是因为技术方案的发展和某些流量APP的封锁,唤起APP的方案就变得复杂了起来。本文从介绍唤起APP的诸多...</p> <div class="com_white-left-info"> <div class="com_white-left-infol"> <a href="https://www.ucloud.cn/yun/u-774.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/07/small_000000774.jpg" alt=""><span class="layui-hide64">myshell</span></a> <time datetime="">2019-08-23 14:15</time> <span><i class="fa fa-commenting"></i>评论0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="https://www.ucloud.cn/yun/7944.html"><b>龙图 VP 李翀:数据化运营及云计算下的运维</b></a></h2> <p class="ellipsis2 good">摘要:文龙图李翀原文地址当游戏遇上大数据和云计算谈数据化运营及云计算下的运维龙图做了年的游戏,真正快速发展起来是在移动互联网这个时代。刀塔传奇遇上大数据,现在在整个运营和运维过程中,每天产生日志文件已经达到级的水平。 showImg(http://lock522.b0.upaiyun.com/%E9%BE%99%E5%9B%BEVP%20%E6%9D%8E%E7%BF%80.JPG); 文 ...</p> <div class="com_white-left-info"> <div class="com_white-left-infol"> <a href="https://www.ucloud.cn/yun/u-168.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/01/small_000000168.jpg" alt=""><span class="layui-hide64">Java_oldboy</span></a> <time datetime="">2019-05-28 16:56</time> <span><i class="fa fa-commenting"></i>评论0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> </ul> </div> <div class="topicone-box-wangeditor"> <h3 class="top-com-title mb-64"><span>发表评论</span></h3> <div class="xcp-publish-main flex_box_zd"> <div class="unlogin-pinglun-box"> <a href="javascript:login()" class="grad">登陆后可评论</a> </div> </div> </div> <div class="site-box-content"> <div class="site-content-title"> <h3 class="top-com-title mb-64"><span>0条评论</span></h3> </div> <div class="pages"></ul></div> </div> </div> <div class="layui-col-md4 layui-col-lg3 com_white-right site-wrap-right"> <div class=""> <div class="com_layuiright-box user-msgbox"> <a href="https://www.ucloud.cn/yun/u-939.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/09/small_000000939.jpg" alt=""></a> <h3><a href="https://www.ucloud.cn/yun/u-939.html" rel="nofollow">Soarkey</a></h3> <h6>男<span>|</span>高级讲师</h6> <div class="flex_box_zd user-msgbox-atten"> <a href="javascript:attentto_user(939)" id="attenttouser_939" class="grad follow-btn notfollow attention">我要关注</a> <a href="javascript:login()" title="发私信" >我要私信</a> </div> <div class="user-msgbox-list flex_box_zd"> <h3 class="hpf">TA的文章</h3> <a href="https://www.ucloud.cn/yun/ut-939.html" class="box_hxjz">阅读更多</a> </div> <ul class="user-msgbox-ul"> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/130718.html">tensorflow1.4</a></h3> <p>阅读 2017<span>·</span>2023-04-25 19:03</p></li> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/122481.html">曙光发布“城市云脑”系列解决方案 十大场景全赋能智慧城市_云资讯</a></h3> <p>阅读 1198<span>·</span>2021-10-14 09:42</p></li> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/120370.html">云主机3m带宽支持多少人在线-云服务器上5M带宽大概支持多少人同时在线?</a></h3> <p>阅读 3362<span>·</span>2021-09-22 15:16</p></li> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/119807.html">⭐算法入门⭐《二叉树 - 二叉搜索树》简单05 —— LeetCode 897. 递增顺序搜索树</a></h3> <p>阅读 898<span>·</span>2021-09-10 10:51</p></li> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/119235.html">硬件创业:智能硬件产品详细开发指南</a></h3> <p>阅读 1490<span>·</span>2021-09-06 15:00</p></li> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/117174.html">浅谈pc和移动端的响应式</a></h3> <p>阅读 2379<span>·</span>2019-08-30 15:55</p></li> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/113698.html">css3过渡</a></h3> <p>阅读 443<span>·</span>2019-08-29 16:22</p></li> <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/109603.html">大话Redux</a></h3> <p>阅读 879<span>·</span>2019-08-26 13:49</p></li> </ul> </div> <!-- 文章详情右侧广告--> <div class="com_layuiright-box"> <h6 class="top-com-title"><span>最新活动</span></h6> <div class="com_adbox"> <div class="layui-carousel" id="right-item"> <div carousel-item> <div> <a href="https://www.ucloud.cn/site/active/kuaijiesale.html?ytag=seo" rel="nofollow"> <img src="https://www.ucloud.cn/yun/data/attach/240625/2rTjEHmi.png" alt="云服务器"> </a> </div> <div> <a href="https://www.ucloud.cn/site/product/gpu.html" rel="nofollow"> <img src="https://www.ucloud.cn/yun/data/attach/240807/7NjZjdrd.png" alt="GPU云服务器"> </a> </div> </div> </div> </div> <!-- banner结束 --> <div class="adhtml"> </div> <script> $(function(){ $.ajax({ type: "GET", url:"https://www.ucloud.cn/yun/ad/getad/1.html", cache: false, success: function(text){ $(".adhtml").html(text); } }); }) </script> </div> </div> </div> </div> </div> </section> <!-- wap拉出按钮 --> <div class="site-tree-mobile layui-hide"> <i class="layui-icon layui-icon-spread-left"></i> </div> <!-- wap遮罩层 --> <div class="site-mobile-shade"></div> <!--付费阅读 --> <div id="payread"> <div class="layui-form-item">阅读需要支付1元查看</div> <div class="layui-form-item"><button class="btn-right">支付并查看</button></div> </div> <script> var prei=0; $(".site-seo-depict pre").each(function(){ var html=$(this).html().replace("<code>","").replace("</code>","").replace('<code class="javascript hljs" codemark="1">',''); $(this).attr('data-clipboard-text',html).attr("id","pre"+prei); $(this).html("").append("<code>"+html+"</code>"); prei++; }) $(".site-seo-depict img").each(function(){ if($(this).attr("src").indexOf('data:image/svg+xml')!= -1){ $(this).remove(); } }) $("LINK[href*='style-49037e4d27.css']").remove(); $("LINK[href*='markdown_views-d7a94ec6ab.css']").remove(); layui.use(['jquery', 'layer','code'], function(){ $("pre").attr("class","layui-code"); $("pre").attr("lay-title",""); $("pre").attr("lay-skin",""); layui.code(); $(".layui-code-h3 a").attr("class","copycode").html("复制代码 ").attr("onclick","copycode(this)"); }); function copycode(target){ var id=$(target).parent().parent().attr("id"); var clipboard = new ClipboardJS("#"+id); clipboard.on('success', function(e) { e.clearSelection(); alert("复制成功") }); clipboard.on('error', function(e) { alert("复制失败") }); } //$(".site-seo-depict").html($(".site-seo-depict").html().slice(0, -5)); </script> <link rel="stylesheet" type="text/css" href="https://www.ucloud.cn/yun/static/js/neweditor/code/styles/tomorrow-night-eighties.css"> <script src="https://www.ucloud.cn/yun/static/js/neweditor/code/highlight.pack.js" type="text/javascript"></script> <script src="https://www.ucloud.cn/yun/static/js/clipboard.js"></script> <script>hljs.initHighlightingOnLoad();</script> <script> function setcode(){ var _html=''; document.querySelectorAll('pre code').forEach((block) => { var _tmptext=$.trim($(block).text()); if(_tmptext!=''){ _html=_html+_tmptext; console.log(_html); } }); } </script> <script> function payread(){ layer.open({ type: 1, title:"付费阅读", shadeClose: true, content: $('#payread') }); } // 举报 function jupao_tip(){ layer.open({ type: 1, title:false, shadeClose: true, content: $('#jubao') }); } $(".getcommentlist").click(function(){ var _id=$(this).attr("dataid"); var _tid=$(this).attr("datatid"); $("#articlecommentlist"+_id).toggleClass("hide"); var flag=$("#articlecommentlist"+_id).attr("dataflag"); if(flag==1){ flag=0; }else{ flag=1; //加载评论 loadarticlecommentlist(_id,_tid); } $("#articlecommentlist"+_id).attr("dataflag",flag); }) $(".add-comment-btn").click(function(){ var _id=$(this).attr("dataid"); $(".formcomment"+_id).toggleClass("hide"); }) $(".btn-sendartcomment").click(function(){ var _aid=$(this).attr("dataid"); var _tid=$(this).attr("datatid"); var _content=$.trim($(".commenttext"+_aid).val()); if(_content==''){ alert("评论内容不能为空"); return false; } var touid=$("#btnsendcomment"+_aid).attr("touid"); if(touid==null){ touid=0; } addarticlecomment(_tid,_aid,_content,touid); }) $(".button_agree").click(function(){ var supportobj = $(this); var tid = $(this).attr("id"); $.ajax({ type: "GET", url:"https://www.ucloud.cn/yun/index.php?topic/ajaxhassupport/" + tid, cache: false, success: function(hassupport){ if (hassupport != '1'){ $.ajax({ type: "GET", cache:false, url: "https://www.ucloud.cn/yun/index.php?topic/ajaxaddsupport/" + tid, success: function(comments) { supportobj.find("span").html(comments+"人赞"); } }); }else{ alert("您已经赞过"); } } }); }); function attenquestion(_tid,_rs){ $.ajax({ //提交数据的类型 POST GET type:"POST", //提交的网址 url:"https://www.ucloud.cn/yun/favorite/topicadd.html", //提交的数据 data:{tid:_tid,rs:_rs}, //返回数据的格式 datatype: "json",//"xml", "html", "script", "json", "jsonp", "text". //在请求之前调用的函数 beforeSend:function(){}, //成功返回之后调用的函数 success:function(data){ var data=eval("("+data+")"); console.log(data) if(data.code==2000){ layer.msg(data.msg,function(){ if(data.rs==1){ //取消收藏 $(".layui-layer-tips").attr("data-tips","收藏文章"); $(".layui-layer-tips").html('<i class="fa fa-heart-o"></i>'); } if(data.rs==0){ //收藏成功 $(".layui-layer-tips").attr("data-tips","已收藏文章"); $(".layui-layer-tips").html('<i class="fa fa-heart"></i>') } }) }else{ layer.msg(data.msg) } } , //调用执行后调用的函数 complete: function(XMLHttpRequest, textStatus){ postadopt=true; }, //调用出错执行的函数 error: function(){ //请求出错处理 postadopt=false; } }); } </script> <footer> <div class="layui-container"> <div class="flex_box_zd"> <div class="left-footer"> <h6><a href="https://www.ucloud.cn/"><img src="https://www.ucloud.cn/yun/static/theme/ukd//images/logo.png" alt="UCloud (优刻得科技股份有限公司)"></a></h6> <p>UCloud (优刻得科技股份有限公司)是中立、安全的云计算服务平台,坚持中立,不涉足客户业务领域。公司自主研发IaaS、PaaS、大数据流通平台、AI服务平台等一系列云计算产品,并深入了解互联网、传统企业在不同场景下的业务需求,提供公有云、混合云、私有云、专有云在内的综合性行业解决方案。</p> </div> <div class="right-footer layui-hidemd"> <ul class="flex_box_zd"> <li> <h6>UCloud与云服务</h6> <p><a href="https://www.ucloud.cn/site/about/intro/">公司介绍</a></p> <p><a href="https://zhaopin.ucloud.cn/" >加入我们</a></p> <p><a href="https://www.ucloud.cn/site/ucan/onlineclass/">UCan线上公开课</a></p> <p><a href="https://www.ucloud.cn/site/solutions.html" >行业解决方案</a></p> <p><a href="https://www.ucloud.cn/site/pro-notice/">产品动态</a></p> </li> <li> <h6>友情链接</h6> <p><a href="https://www.compshare.cn/?ytag=seo">GPU算力平台</a></p> <p><a href="https://www.ucloudstack.com/?ytag=seo">UCloud私有云</a></p> <p><a href="https://www.surfercloud.com/">SurferCloud</a></p> <p><a href="https://www.uwin-link.com/">工厂仿真软件</a></p> <p><a href="https://pinex.it/">Pinex</a></p> <p><a href="https://www.picpik.ai/zh">AI绘画</a></p> </li> <li> <h6>社区栏目</h6> <p><a href="https://www.ucloud.cn/yun/column/index.html">专栏文章</a></p> <p><a href="https://www.ucloud.cn/yun/udata/">专题地图</a></p> </li> <li> <h6>常见问题</h6> <p><a href="https://www.ucloud.cn/site/ucsafe/notice.html" >安全中心</a></p> <p><a href="https://www.ucloud.cn/site/about/news/recent/" >新闻动态</a></p> <p><a href="https://www.ucloud.cn/site/about/news/report/">媒体动态</a></p> <p><a href="https://www.ucloud.cn/site/cases.html">客户案例</a></p> <p><a href="https://www.ucloud.cn/site/notice/">公告</a></p> </li> <li> <span><img src="https://static.ucloud.cn/7a4b6983f4b94bcb97380adc5d073865.png" alt="优刻得"></span> <p>扫扫了解更多</p></div> </div> <div class="copyright">Copyright © 2012-2023 UCloud 优刻得科技股份有限公司<i>|</i><a rel="nofollow" href="http://beian.miit.gov.cn/">沪公网安备 31011002000058号</a><i>|</i><a rel="nofollow" href="http://beian.miit.gov.cn/"></a> 沪ICP备12020087号-3</a><i>|</i> <script type="text/javascript" src="https://gyfk12.kuaishang.cn/bs/ks.j?cI=197688&fI=125915" charset="utf-8"></script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?290c2650b305fc9fff0dbdcafe48b59d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-DZSMXQ3P9N"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-DZSMXQ3P9N'); </script> <script> (function(){ var el = document.createElement("script"); el.src = "https://lf1-cdn-tos.bytegoofy.com/goofy/ttzz/push.js?99f50ea166557aed914eb4a66a7a70a4709cbb98a54ecb576877d99556fb4bfc3d72cd14f8a76432df3935ab77ec54f830517b3cb210f7fd334f50ccb772134a"; el.id = "ttzz"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(el, s); })(window) </script></div> </div> </footer> </body> <script src="https://www.ucloud.cn/yun/static/theme/ukd/js/common.js"></script> <<script type="text/javascript"> $(".site-seo-depict *,.site-content-answer-body *,.site-body-depict *").css("max-width","100%"); </script> </html>