第一次作和手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的推廣連接有幾種模式,修改運營配置後,正常下載。