寫在前面的話:本文面向web前端工程師,iOS 或 Android 請移步這裏stackoverflow。關於app開發模式,這裏再也不贅述。javascript
js 調用 Native iOS/Android function 須要使用不一樣的方法,因此首先要作的是判斷用戶機型,代碼以下:前端
var u = navigator.userAgent.toLowerCase(); var isApple = /iphone|ipad|ipod|ios/i.test(u); var isAndroid = /android/i.test(u);
經過 js 改變 window.location 值, 來實現調用 iOS function ,這個操做並非跳轉,而是觸發了一個 即發即棄 (a fire and forget) 事件。代碼以下:java
//一個參數 window.location = 'color://' + color; //兩個參數 window.location = 'myscheme://param1/' + value1 + '/param2/' + value2;
iOS 端接收參數須要進行 url 編碼處理,可使用 encodeURIComponent 函數處理。android
ps:關於URI和URL
URI(Uniform Resource Identifier) 統一資源標識符
URL(Uniform Resource Locator) 統一資源定位符
URI包含URL和URN,若是URI標識一我的,URL比如這我的的住址,URN則是名字。ios
與 iOS 不一樣之處在於,Andriod 接收中文英文參數,無需 encode 操做。實現代碼以下:web
if(window.AndroidBridge) { window.AndroidBridge.changeNavbarBackground(color); }
三方會根據業務需求定義一個通用的函數名稱,這個函數名稱一般是由web前端工程師定義的。例如,我想要獲取用戶id,本着駝峯命名規範,咱們將函數名稱統一定義爲 getId() 。在 iOS 調試時,發現iOS接收到的函數方法爲 getid() ,致使bug。前端工程師
ok,問題解決了,若還有其餘問題,歡迎給我留言。若是對你有幫助,記得在下方點個推薦吧~~app