蝦扯蛋?
第一次在掘金寫東西,有點緊張。
我為啥寫這個,是因為我最近用 ionic 開發一個 app ,需要用 URL Scheme 。搞這個 URL Scheme 折騰了一下,所以寫下此文,並分享給需要的朋友。?
什麼是 URL Scheme❓
簡單的說,URL Scheme就是一個可以讓app相互之間可以跳轉的協議。列如:微信的 URL Scheme 就是 weixin://
,在瀏覽器中開啟 weixin://scanqrcode
可以跳轉到微信的掃一掃功能。
更多 URL Scheme :www.zhihu.com/question/19…
開始擼程式碼 ?
構建demo ?
我們就用ionic的tabs模板構建一個demo吧
ionic start myApp tabs
複製程式碼
安裝 URL Scheme Cordova 外掛 ?
我們需要的安裝的 URL Scheme Cordova 外掛是cordova-plugin-customurlscheme
ionic cordova plugin add cordova-plugin-customurlscheme --variable URL_SCHEME=myapp-mak
複製程式碼
在根目錄使用此命令進行安裝,URL_SCHEME=myapp-mak
我定義的協議名稱是myapp-mak
。名稱隨便起,只要不跟其他app衝突就好。?
如果安裝後想修改協議名稱的,可以去改config.xml和package.json。開啟就能看到之前定義的協議名稱了
編譯安裝app到手機上?
ionic cordova run ios
複製程式碼
編譯安裝完成後,可以通過這個協議myapp-mak://隨便寫
開啟此app。如:在瀏覽器開啟myapp-mak://test
如何知道是哪個URL開啟的App❓
- 獲取url
//獲取url並顯示在頁面上
(window as any).handleOpenURL = (url: string) => {
console.log(url);
this.url = url;
};
複製程式碼
這句程式碼是獲取是哪個URL開啟的app了。
注意:handleOpenURL函式必須是全域性唯一,否則無法正常接收
- 修改config.xml
<allow-intent href="myapp-mak:*" />
複製程式碼
這裡必須寫上這句話,這句是允許我們定義的協議可以傳遞。否則handleOpenURL也無法接收到URL
測試 ⚙
- 重新編譯安裝
ionic cordova run ios
複製程式碼
- 在瀏覽器開啟
myapp-mak://test
獲取URL有啥作用呢?獲取URL之後,我們可以判斷URL的不同進行不同的操作,例如:開啟指定頁面、分享、支付……
結束 ?
第一次寫文,寫得不是很好。?
除了通過URL Scheme方式來開啟app。其實可以使用Universal Links && Deep Linking 來開啟app。
分享一個 Universal Links && Deep Linking Cordova 外掛給大家github.com/nordnet/cor…