原生APP中js怎样与Android和ios进行交互

下面所写的内容是站在h5工程师角度写的,至于Android和ios怎样与js进行交互,清Android和ios工程师分别参考http://www.111cn.net/sj/android/85626.htm和http://www.jianshu.com/p/df76cc7a395d

一、对于Android和ios我们要执行不同的操作,下面是判断系统的js代码

// alert(ismobile(1)); 1表示Android,0表示ios
function ismobile(test){
 var u = navigator.userAgent, app = navigator.appVersion;
 if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){
 if(window.location.href.indexOf("?mobile")<0){
 try{
 if(/iPhone|mac|iPod|iPad/i.test(navigator.userAgent)){
 return '0';
 }else{
 return '1';
 }
 }catch(e){}
 }
 }else if( u.indexOf('iPad') > -1){
 return '0';
 }else{
 return '1';
 }
}

二、js调用app端函数,下面是js代码

if(ismobile(1)==1){
 Android.setTypeActivity(id,type,href);
 }else{
 jsToios(id,type,href);
 }

setTypeActivity是Android端定义的函数,jsToios是ios端定义的函数,括号里是js端传递的参数。

三、至于js端怎样获取app端的数据,只需在js端提供给app端函数名字,在通知app端调用即可

四、还有一种方法可以不通过app的方法将数据传递给另一个页面,那就是通过URL的方式

在本页面将数据拼接在ip后面

在另外一个页面通过下面方法获取URL后的参数

function GetRequest() { 
 var url = location.search; //获取url中"?"符后的字串 
 var theRequest = new Object(); 
 if (url.indexOf("?") != -1) { 
 var str = url.substr(1); 
 strs = str.split("&"); 
 for(var i = 0; i < strs.length; i ++) { 
 theRequest[strs[i].split("=")[0]]=decodeURIComponent(strs[i].split("=")[1]); 
 } 
 } 
 return theRequest; 
}
// 获取URL参数
var Request = new Object(); 
Request = GetRequest(); 
var name;
name = Request['name'];

刚开始做与app交互的HTML5时,有点不知所措,其实这种说明网上有很多资料,我现在专门站在前端的角度总结一下。

现在很多原生的app都会嵌入或多或少的HTML5页面,所以了解js怎样与原生app交互是必须的,至于怎样进行交互更能优化app的交互,那还需要不断的实践。

本文永久地址:http://blog.it985.com/16268.html

本文出自IT985博客 ,转载时请注明出处及相应链接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值