JS調(diào)用Android、Ios原生控件
在上一篇博客(詳解JS與APP原生控件交互)中已經(jīng)和大家聊了,關(guān)于JS與Android、Ios原生控件之間相互通信的詳細(xì)代碼實(shí)現(xiàn),今天我們一起聊一下JS調(diào)用Android、Ios通信的相同點(diǎn)和不同點(diǎn),以便幫助我們?cè)谶M(jìn)行混合式開發(fā)時(shí),提高代碼質(zhì)量,實(shí)現(xiàn)兩者在網(wǎng)頁(yè)端代碼的統(tǒng)一。
首先我們先看一下Ios調(diào)用JS的方法實(shí)現(xiàn):
//無(wú)參調(diào)用
function SwiftCallJs1(){}
//有參調(diào)用
function SwiftCallJs2(name, message){}
緊接著我們看一下Android調(diào)用JS的方法實(shí)現(xiàn):
//無(wú)參調(diào)用
function AndroidCallJs1(){}
//有參調(diào)用
function AndroidCallJs2(data){}
從上面的代碼中你是否發(fā)現(xiàn),Android與Ios調(diào)用JS時(shí),JS處理函數(shù)兩者在無(wú)參調(diào)用時(shí)是相通的。有參調(diào)用不同點(diǎn)是Ios是一對(duì)一直接傳遞,Android則是字符串傳遞,當(dāng)然我們可以通過(guò)在Android和Ios端統(tǒng)一傳參使用JSON格式,JS支持JSON解析,從而實(shí)現(xiàn)兩個(gè)平臺(tái)在有參方法調(diào)用上的統(tǒng)一。
看完上面的Ios與Android調(diào)用JS,下面我們看一下JS調(diào)用Android與Ios原生通信的異同點(diǎn)。
首先我們看一下JS調(diào)用Android的方法實(shí)現(xiàn):
//無(wú)參調(diào)用
function callNull(){
android.CallNull();
}
//有參調(diào)用
function callMessage(){
android.CallMessage("msg");
}
//有參調(diào)用--json
function callJson(){
var json = "[{\"name\":\"滿藝網(wǎng)\",\"url\":\"www.manyiaby.com\"}]";
android.CallJson(json);
}
接下來(lái)我們看一下JS調(diào)用Ios的方法實(shí)現(xiàn):
//一:無(wú)前綴調(diào)用
//無(wú)參調(diào)用
function test1(){
Test1();
}
//有參調(diào)用
function test2(){
Test2("滿藝網(wǎng)","www.manyiaby.com");
}
//二:有前綴調(diào)用
//無(wú)參調(diào)用--帶返回操作結(jié)果處理
function callSystem(){
Ios.CallSystem();
}
//操作結(jié)果處理函數(shù)
function JSCallNullIosResult(){}
//有參調(diào)用
function callWithMsg(){
Ios.CallWithMsg("滿藝網(wǎng)","www.manyiaby.com");
}
//有參調(diào)用--json
function callWithJson(){
var json = "{\"name\":\"滿藝網(wǎng)\",\"url\":\"www.manyiaby.com\"}";
Ios.CallWithJson(json);
}
//有參調(diào)用--帶返回結(jié)果處理
function callWithJsonResult(){
var json = "{\"name\":\"滿藝網(wǎng)\",\"url\":\"www.manyiaby.com\"}";
Ios.CallWithJsonResult(json);
}
function JSCallJsonIosResult(data){
alert("name:"+data["name"]);
}
看到這里你一定發(fā)現(xiàn)了不同點(diǎn),1、Android沒(méi)有不帶前綴的方法調(diào)用,2、Android沒(méi)有方法調(diào)用后的操作結(jié)果返回處理邏輯。對(duì)于第一點(diǎn),就目前我所認(rèn)識(shí)到的是原生沒(méi)有通過(guò)具體的實(shí)現(xiàn)邏輯,不過(guò)這個(gè)點(diǎn)不影響我們的開發(fā),因?yàn)镮os是支持前綴方法調(diào)用的。對(duì)于第二點(diǎn),我的理解是對(duì)于返回處理函數(shù),我們可以在開發(fā)的添加上去,從而提高Ios用戶的使用體驗(yàn),并且處理函數(shù)不會(huì)影響到方法的調(diào)用。
好了到這里就和大家聊完了,當(dāng)然如果所述與您的理解有偏差,還望指點(diǎn)一二。
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
- 三步搞定:Vue.js調(diào)用Android原生操作
- DCloud的native.js調(diào)用系統(tǒng)分享實(shí)例Android版代碼
- Android中實(shí)現(xiàn)WebView和JavaScript的互相調(diào)用詳解
- Android WebView的使用方法及與JS 相互調(diào)用
- Android編程使用WebView實(shí)現(xiàn)與Javascript交互的方法【相互調(diào)用參數(shù)、傳值】
- Android總結(jié)之WebView與Javascript交互(互相調(diào)用)
- Android與JS之間跨平臺(tái)異步調(diào)用實(shí)例詳解
- Android webview和js互相調(diào)用實(shí)現(xiàn)方法
- Android WebView使用方法詳解 附j(luò)s交互調(diào)用方法
- Android與JS相互調(diào)用的方法
相關(guān)文章
JavaScript和TypeScript中的void的具體使用
這篇文章主要介紹了JavaScript和TypeScript中的void的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
JS插件plupload.js實(shí)現(xiàn)多圖上傳并顯示進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了PHP結(jié)合plupload.js JS插件實(shí)現(xiàn)多圖上傳并顯示進(jìn)度條加刪除實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
JS實(shí)現(xiàn)部分HTML固定頁(yè)面頂部隨屏滾動(dòng)效果
這篇文章主要介紹了JS實(shí)現(xiàn)部分HTML固定頁(yè)面頂部隨屏滾動(dòng)效果,涉及JavaScript響應(yīng)onscroll事件動(dòng)態(tài)操作頁(yè)面元素屬性的相關(guān)技巧,需要的朋友可以參考下2015-12-12
element-ui組件輸入框之放大鏡搜索圖標(biāo)問(wèn)題
這篇文章主要介紹了element-ui組件輸入框之放大鏡(搜索圖標(biāo))的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-11-11
ckeditor一鍵排版功能實(shí)現(xiàn)方法分析
這篇文章主要介紹了ckeditor一鍵排版功能實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了ckeditor一鍵排版相關(guān)擴(kuò)展插件定義、配置與使用方法,需要的朋友可以參考下2020-02-02

