知乎日報同一個二維碼能分別對號入座到 iOS 和 Android 技術上是如何實現的?

地址:http://daily.zhihu.com/
用 iPhone 和 Android 手機掃描結果地址都一樣,但是能分別對號入座到 iOS 和 Android,技術上是如何實現的?


這個二維碼指向這樣一個鏈接:
http://daily.zhihu.com/download/

這個鏈接內容之主體是一段 JS 代碼,用來判斷客戶端的系統,跳轉到不同的地方,核心之代碼如下:

function redirect(){
location.href = href;
}

var url_parts = document.URL.split("?");
var query = url_parts.length == 2 ? ("?" + url_parts[1]) : "";
var href = "/";
var ua = navigator.userAgent.toLowerCase();

if (/iphone|ipad|ipod/.test(ua)) {
href = "https://itunes.apple.com/cn/app/id639087967?mt=8";
__ga("set", "page", "/download/ios" + query);
__ga("send", "pageview");
__ga("send", "event", "app", "download-via-qrcode", "ios", {"hitCallback": redirect});
setTimeout(redirect, 2000);
} else if (/android/.test(ua)) {
href = "http://s.zhimg.com/daily/zhihu-daily-1.0.1.apk";
__ga("set", "page", "/download/android" + query);
__ga("send", "pageview");
__ga("send", "event", "app", "download-via-qrcode", "android-local", {"hitCallback": redirect});
setTimeout(redirect, 2000);
} else if (/windows phone|blackberry/.test(ua)) {
__ga("set", "page", "/download/other" + query);
__ga("send", "pageview");
alert("抱歉,暫不支持您的系統");
location.href = "/";
} else {
__ga("send", "pageview");
location.href = "/";
}
})()

我說話直一點啊,這是常識,你需要多學習。
莫怪。


二維碼先到一個中間網頁,這個網頁通過user agent判斷操作系統和掃描app,然後給出相應的url就可以。

大多數用戶習慣用微信掃碼,而微信只支持自家的網址下載apk,所以安卓的應用的url必須先放到應用寶上,然後提取apk實際鏈接。

因為我們客服反映很多人來問這個,就做了一個小工具(http://cli.im/app),可以把這些繁瑣的寫腳本的工作簡單快速搞定。

如果appstore和應用寶審核通過,1分鐘就可以快速搞定這種app下載二維碼。

補充:我們承諾這些功能永久免費。

草料早已經贏利,我們的主營業務是為企業提供商品二維碼的管理系統,所以不必擔心生成的二維碼以後掃不出來或者插廣告。


我們是這樣做的
默認二維碼直接訪問一個頁面地址,該頁面上有安卓客戶端的功能介紹和最近版本更新說明,同時頁面上有按鈕點擊可以直接下載安卓的app,再加上豌豆莢啥的鏈接
在該頁面上做來源系統判斷,如果是ios則直接轉向到app stroe上的下載地址
目前感覺還行,安卓和ios都滿足了
啥?你問wp和s60?呵呵


所有的瀏覽器在發送http請求的時候都會在請求頭部加上一個user agent的字元串。這個字元串包括操作系統,瀏覽器等客戶端信息,可以用User-agent來判斷具體瀏覽器和系統


好推二維碼-安卓蘋果二維碼合併成一個
這個


看到這個問題,我就想到Windows 10 mobile上的Edge瀏覽器的用戶代理字元串裡面還有安卓、iOS的標識。


響應式跳轉


也有App直接可以生成這樣的二維碼了,幫知乎日報做了一個這樣的二維碼:


推薦閱讀:

如果知乎被放到一拳超人里,會被提出什麼問題?
用知乎帶給很多人優越感,那麼大家覺得用知乎的人的檔次實際如何呢?
女生鍛煉腹肌用到健身房裡哪些器材?順序是怎樣的?
知乎上的人哪來這麼多優越感?
如何評價知乎的「友善度」功能設計?

TAG:知乎 | 產品經理 | 二維碼 | 用戶體驗設計 | 移動互聯網產品 |