JavaScript如何调用Native iOS/Android 方法

Posted homehtml

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript如何调用Native iOS/Android 方法相关的知识,希望对你有一定的参考价值。

写在前面的话:本文面向web前端工程师,iosandroid 请移步这里stackoverflow。关于app开发模式,这里不再赘述。

一、判断机型

js 调用 Native iOS/Android function 需要使用不同的方法,所以首先要做的是判断用户机型,代码如下:

var u = navigator.userAgent.toLowerCase();
var isApple = /iphone|ipad|ipod|ios/i.test(u);
var isAndroid = /android/i.test(u);

二、调用 Native iOS 方法

通过 js 改变 window.location 值, 来实现调用 iOS function ,这个操作并不是跳转,而是触发了一个 即发即弃 (a fire and forget) 事件。代码如下:

//一个参数
window.location = ‘color://‘ + color;

//两个参数
window.location = ‘myscheme://param1/‘ + value1 + ‘/param2/‘ + value2;

iOS 端接收参数需要进行 url 编码处理,可以使用 encodeURIComponent 函数处理。

ps:关于URI和URL
URI(Uniform Resource Identifier) 统一资源标识符
URL(Uniform Resource Locator) 统一资源定位符
URI包含URL和URN,如果URI标识一个人,URL好比这个人的住址,URN则是名字。

三、调用 Native Andriod 方法

与 iOS 不同之处在于,Andriod 接收中文英文参数,无需 encode 操作。实现代码如下:

if(window.AndroidBridge) {
    window.AndroidBridge.changeNavbarBackground(color);
}

四、关于函数名称约定

三方会根据业务需求定义一个通用的函数名称,这个函数名称通常是由web前端工程师定义的。例如,我想要获取用户id,本着驼峰命名规范,我们将函数名称统一定义为 getId() 。在 iOS 调试时,发现iOS接收到的函数方法为 getid() ,导致bug。

ok,问题解决了,若还有其他问题,欢迎给我留言。如果对你有帮助,记得在下方点个推荐吧~~

本文转载于:猿2048?https://www.mk2048.com/blog/blog.php?id=hh1bbih0h0j

以上是关于JavaScript如何调用Native iOS/Android 方法的主要内容,如果未能解决你的问题,请参考以下文章

swift 笔记:iOS与JavaScript的交互(二):JavaScriptCore:5。 JavaScript调用native

如何在 React Native 中调用 AlertIOS

如何在 React Native 中将事件从 iOS 发送到 javascript

Unity在Android和iOS中如何调用Native API

Unity在Android和iOS中如何调用Native API

将JSON字符串从IOS Native发送到Javascript(JSON.Parse)时出现Json Parse错误[重复]