第一次做和原生app的混合开发,其中有一些活动页面需要我这边用h5来做。
那么必定涉及一个问题。就是和原生app做交互。
分为ios和android。方法不同,逻辑思路都差不多。
大体思路就是我和app端约定一个方法,类似于?接头暗号?
比如说我们约定了一个方法:’蓝天白云‘,那么当我js调用这个方法的时候,app端通过'蓝天白云',认出了我,并作出了响应。
那么问题来了,很多同学(大概只有我自己)会说了,我原生js定义的函数,他app怎么调用,怎么知道我调了改方法。
****和app端沟通以后,原来app中的底层,或者框架里,会定义一个方法来接受我们的js函数****(这里不用管,我们只要管我们调用什么方法就可以了)
上代码
1 //定义传的参数 2 let sendData = { 3 url: "articleDetail", 4 id: v.id 5 }; 6 //判断运行环境(搜一下) 7 if (this.isiOS) { 8 //解释一下,这里定义的window.xxxx什么方法,我们的window对象下是没有这个方法的,只有当我们的程序,运行到了适当的环境中,app会给我们的window对象添加这个方法,让我们可以调用,所以用了try防止报错 9 //下面的callIos和callAndroid就是我和app大兄弟约定的方法 10 try { 11 window.webkit.messageHandlers.callIos.postMessage( 12 JSON.stringify(sendData) 13 ); 14 } catch (e) {} 15 } else { 16 try { 17 window.jsInterface.invokeMethod("callAndroid", [ 18 JSON.stringify(sendData) 19 ]); 20 } catch (e) {} 21 }