JS調用Android、Ios原生控件


  在上一篇博客中已經和大家聊了,關於JS與Android、Ios原生控件之間相互通信的詳細代碼實現,今天我們一起聊一下JS調用Android、Ios通信的相同點和不同點,以便幫助我們在進行混合式開發時,提高代碼質量,實現兩者在網頁端代碼的統一。

  首先我們先看一下Ios調用JS的方法實現:

//無參調用
function SwiftCallJs1(){}
//有參調用
function SwiftCallJs2(name, message){}

  緊接着我們看一下Android調用JS的方法實現:

//無參調用
function AndroidCallJs1(){}
//有參調用
function AndroidCallJs2(data){}

  從上面的代碼中你是否發現,Android與Ios調用JS時,JS處理函數兩者在無參調用時是相通的。有參調用不同點是Ios是一對一直接傳遞,Android則是字符串傳遞,當然我們可以通過在Android和Ios端統一傳參使用JSON格式,JS支持JSON解析,從而實現兩個平台在有參方法調用上的統一。

  看完上面的Ios與Android調用JS,下面我們看一下JS調用Android與Ios原生通信的異同點。

  首先我們看一下JS調用Android的方法實現:

//無參調用
function callNull(){
      android.CallNull();  
}
//有參調用
function callMessage(){
      android.CallMessage("msg");
}
//有參調用--json
function callJson(){
      var json = "[{\"name\":\"滿藝網\",\"url\":\"www.manyiaby.com\"}]";
      android.CallJson(json);
}    

  接下來我們看一下JS調用Ios的方法實現:

//一:無前綴調用
//無參調用
function test1(){
      Test1();
}
//有參調用
function test2(){
      Test2("滿藝網","www.manyiaby.com");
}
//二:有前綴調用
//無參調用--帶返回操作結果處理
function callSystem(){
      Ios.CallSystem();
}
//操作結果處理函數
function JSCallNullIosResult(){}

//有參調用
function callWithMsg(){
      Ios.CallWithMsg("滿藝網","www.manyiaby.com");
}
//有參調用--json
function callWithJson(){
     var json = "{\"name\":\"滿藝網\",\"url\":\"www.manyiaby.com\"}";
     Ios.CallWithJson(json);
}
//有參調用--帶返回結果處理
function callWithJsonResult(){
        var json = "{\"name\":\"滿藝網\",\"url\":\"www.manyiaby.com\"}";
     Ios.CallWithJsonResult(json);
}
function JSCallJsonIosResult(data){
      alert("name:"+data["name"]);  
}

  看到這里你一定發現了不同點,1、Android沒有不帶前綴的方法調用,2、Android沒有方法調用后的操作結果返回處理邏輯。對於第一點,就目前我所認識到的是原生沒有通過具體的實現邏輯,不過這個點不影響我們的開發,因為Ios是支持前綴方法調用的。對於第二點,我的理解是對於返回處理函數,我們可以在開發的添加上去,從而提高Ios用戶的使用體驗,並且處理函數不會影響到方法的調用。

  好了到這里就和大家聊完了,當然如果所述與您的理解有偏差,還望指點一二。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM