javascript - 兼容Android和ios的網(wǎng)頁調(diào)起原生app問題,使用iframe在ios的Safari無效?
問題描述
如題,公司下來的一個(gè)需求,要求手機(jī)上裝了app則調(diào)轉(zhuǎn)到指定的頁面,如果沒有裝則跳轉(zhuǎn)到下載頁面,遍尋網(wǎng)上的代碼,經(jīng)過測(cè)試,發(fā)現(xiàn)了一個(gè)問題。
普遍來說有兩種辦法:
第一種是iframe:遇到的問題是通過隱藏一個(gè)iframe調(diào)起app,過幾秒后跳轉(zhuǎn)頁面,在Android上是可以的,但是在ios上測(cè)試無效果,始終沒有調(diào)用起來,調(diào)用 sms:// tel://也不行;測(cè)試機(jī)iphone6,系統(tǒng)10.0.2;
第二種方法是使用a標(biāo)簽的href屬性跳轉(zhuǎn),如果app已經(jīng)安裝了Android和ios上都可以,但是如果沒有安裝app,在ios上網(wǎng)頁會(huì)報(bào)一個(gè)網(wǎng)址無效的錯(cuò)誤,這個(gè)是產(chǎn)品那里不允許的。
求教sf論壇里的大神來指點(diǎn)一下正確調(diào)起app的方式,拜謝。
另外還有一種方法是
<a href='itms://itunes.apple.com/app/id452186370'>百度地圖</a>
這種應(yīng)該說很好,但是與我的需求有一點(diǎn)不合,我們這里要求是跳轉(zhuǎn)到app指定頁面而不是單單調(diào)起來。
問題解答
回答1:在iOS上,首先app必須注冊(cè)自己的URL Schemes,就是申明一個(gè)特殊的前綴去代替http,比如abc,你在網(wǎng)頁上檢測(cè)是否是iOS,如果是,就把http換成abc,再打開這個(gè)鏈接。如果是https還是換成abc。
