最近公司的產(chǎn)品需求,希望iOS和安卓使用一個(gè)二維碼忧设,讓掃描的機(jī)器自己識(shí)別操作系統(tǒng)實(shí)現(xiàn)跳轉(zhuǎn)到相應(yīng)的下載鏈接刁标。比如iPhone用微信進(jìn)行掃描就讓他跳轉(zhuǎn)appStore的下載頁(yè)面,安卓機(jī)器使用微信掃描就直接跳瀏覽器下載址晕。但是這二維碼還有一個(gè)需求就是膀懈,用戶已經(jīng)下載了這個(gè)app,當(dāng)用戶打開(kāi)app進(jìn)入到注冊(cè)頁(yè)面時(shí)谨垃,再次掃描這個(gè)二維碼時(shí)启搂,自動(dòng)填寫(xiě)邀請(qǐng)碼進(jìn)行注冊(cè)。那么該如何實(shí)現(xiàn)刘陶,當(dāng)中走了不少?gòu)澛犯於模瑸榇搜邪l(fā)部也開(kāi)了幾次會(huì),細(xì)節(jié)就不說(shuō)了匙隔,直接上代碼疑苫。
使用js實(shí)現(xiàn),其實(shí)代碼非常簡(jiǎn)單.
使用時(shí)直接拷貝代碼纷责,改掉相應(yīng)的鏈接就好捍掺。
PS:該鏈接在微信環(huán)境打開(kāi)時(shí)還是需要手動(dòng)跳轉(zhuǎn)到手機(jī)的瀏覽器才能跳到下載頁(yè)面,因?yàn)槲⑿艃?nèi)的webView比較特別碰逸,所以寫(xiě)了一個(gè)alert引導(dǎo)用戶打開(kāi)瀏覽器乡小。
Update PS : 已經(jīng)解決了微信環(huán)境打開(kāi)時(shí)需要手動(dòng)跳轉(zhuǎn)到手機(jī)瀏覽器才能跳到下載頁(yè)面的情況,使用新的代碼饵史,在微信環(huán)境下也可以直接跳轉(zhuǎn)下載地址而不需要手動(dòng)跳瀏覽器B印!胳喷!
("更新后實(shí)測(cè)是可行的湃番,之前可能有些朋友誤會(huì)了下面的代碼的使用場(chǎng)景。")
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
/**
出來(lái)的鏈接大概是長(zhǎng)這樣的
http://xxxx.cn/243423.html?c=Q23DR32
*/
// c=Q23DR32是注冊(cè)時(shí)掃描獲取的邀請(qǐng)碼吭露。
// 這樣加參數(shù)吠撮,后面的參數(shù)會(huì)被自動(dòng)忽略,不會(huì)影響加載此網(wǎng)頁(yè)
toDownload();
// 新的方法
function toDownload(){
var u = navigator.userAgent;
var ua = u.toLowerCase();
if (/iphone|ipad|ipod/.test(ua)) { // iOS 系統(tǒng) -> 跳AppStore下載地址
//alert("iOS");
window.location.;
} else if ( /android/.test(ua)) { // 安卓系統(tǒng) -> 跳安卓端下載地址
window.location.;
//alert("android");
} else if (IsPC()){ // PC端
}
}
// 修改前的代碼
/*
function goDownload() {
var u = navigator.userAgent, app = navigator.appVersion;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1;
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
// 是安卓瀏覽器
if (isAndroid) {
window.location.; // 跳安卓端下載地址
}
// 是iOS瀏覽器
if (isIOS) {
window.location.; // 跳AppStore下載地址
}
// 是微信內(nèi)部webView
if (is_weixn()) {
alert("請(qǐng)點(diǎn)擊右上角按鈕, 點(diǎn)擊使用瀏覽器打開(kāi)");
}
// 是PC端
if (IsPC()) {
window.location.; // 公司主頁(yè)
}
}
// 是微信瀏覽器
function is_weixn(){
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i)=="micromessenger") {
return true;
} else {
return false;
}
}
*/
function IsPC() {
var userAgentInfo = navigator.userAgent;
var Agents = ["Android", "iPhone",
"SymbianOS", "Windows Phone",
"iPad", "iPod"];
var flag = true;
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false;
break;
}
}
return flag;
}
</script>
</body>
</html>