JS传递数据给IOS Android

发布 : 2016-04-24 分类 : Android 浏览 :

最近学习 Html,需要调用传递数据到 IOS 和 Android,写博客记录下~

一、判断设备是 Android 还是 IOS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var browser = {
versions: (function() {
var a = navigator.userAgent,
b = navigator.appVersion;
return {
trident: a.indexOf("Trident") > -1,
presto: a.indexOf("Presto") > -1,
webKit: a.indexOf("AppleWebKit") > -1,
gecko: a.indexOf("Gecko") > -1 && a.indexOf("KHTML") == -1,
mobile: !!a.match(/AppleWebKit.*Mobile.*/),
ios: !!a.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
android: a.indexOf("Android") > -1 || a.indexOf("Linux") > -1,
iPhone: a.indexOf("iPhone") > -1,
iPad: a.indexOf("iPad") > -1,
webApp: a.indexOf("Safari") == -1
};
})(),
language: (navigator.browserLanguage || navigator.language).toLowerCase()
};

用法:

1
2
3
4
5
if (browser.versions.android) {
//Android
} else if (browser.versions.ios) {
//ios
}

二、调用 Android 的代码

Android 这边相对 IOS 要简单很多,叫 Android 提供一个类名,方法名直接调用即可

1
2
3
//这里的Android全部都是Android程序猿给你里,叫他提供这两个调用就可以了
//data为传递过去的数据
Android.Android(data);

三、调用 IOS 的代码

1
2
3
4
5
6
7
8
9
10
function GoIos(data) {
var iframe = document.createElement("iframe");
var url = "myapp:";
url = url + "&data=" + data;
iframe.src = url;
iframe.style.display = 'none';
document.body.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;
}

data 为 String 数据,传递过去,IOS 就会触发相应回调了

四、应用

1
2
3
4
5
6
7
8
9
10
11
12
//照上面的写法,代码应该如下
function GoToApp(data){
//只能传递字符串,如果是JSON,转成字符串
data = JSON.stringify(data);
if (browser.versions.android) {
//Android
Android.Android(data);
} else if (browser.versions.ios) {
//ios
GoIos(data);
}
}

参考:
js(javascript)与 ios(Objective-C)相互通信交互

本文作者 : Juzisang
原文链接 : https://www.juzisang.com/passages/JS传递数据给IOS Android/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
留下足迹