JavaScript如何调用Native iOS/Android 方法

写在前面的话:本文面向web前端工程师,iOS 或 Android 请移步这里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

原文地址:https://www.cnblogs.com/homehtml/p/12581140.html

时间: 2024-10-08 15:46:48

JavaScript如何调用Native iOS/Android 方法的相关文章

Unity调用原生(iOS, Android)方法

Unity调用原生程序方法,定义接口(doTestSelector): using UnityEngine; using System.Collections; using System.Runtime.InteropServices; public class TestScript : MonoBehaviour { // This tells unity to look up the function FooPluginFunction // inside the static binary

Html5 页面中 JavaScript 启动调用的三种方法比较

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 首先,来看一下 Html5 页面引用 JavaScript 代码的几种方式: 1.Html5 页面中使用 <script>  标签容纳

如何实现 javascript “同步”调用 app 代码

在 App 混合开发中,app 层向 js 层提供接口有两种方式,一种是同步接口,一种一异步接口(不清楚什么是同步的请看这里的讨论).为了保证 web 流畅,大部分时候,我们应该使用异步接口,但是某些情况下,我们可能更需要同步接口.同步接口的好处在于,首先 js 可以通过返回值得到执行结果:其次,在混合式开发中,app 层导出的某些 api 按照语义就应该是同步的,否则会很奇怪——一个可能在 for 循环中使用的,执行非常快的接口,比如读写某个配置项,设计成异步会很奇怪. 那么如何向 js 层导

Hybrid App开发模式中, IOS/Android 和 JavaScript相互调用方式

IOS:Objective-C 和 JavaScript 的相互调用 iOS7以前,iOS SDK 并没有原生提供 js 调用 native 代码的 API.但是 UIWebView 的一个 delegate 方法使我们可以做到让 js 需要调用时,通知 native.在 native 执行完相应调用后,可以用stringByEvaluatingJavaScriptFromString 方法,将执行结果返回给 js.这样,就实现了 js 与 native 代码的相互调用.具体让 js 通知 na

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

本文主要是对unity中如何在Android和iOS中调用Native API进行介绍. 首先unity支持在C#中调用C++ dll,这样可以在Android和iOS中提供C++接口在unity中调用.利用这一特性,可以扩展unity的功能.例如集成和调用第三方库.同时为了满足对unity接口的一致性,可以考虑在android和iOS上提供相同的接口供C#调用. 这里列举以下两个例子. 1. 1. 以弹出一个覆盖部分屏幕的webview为例来说明如何从C#调用Native接口. 2. 2. 简

Android Webview 和Javascript交互,实现Android和JavaScript相互调用

在Android的开发过程中.遇到一个新需求.那就是让Java代码和Javascript代码进行交互.在IOS中实现起来很麻烦.而在Android中相对来说容易多了.Android对这种交互进行了很好的封装.我们可以很简单的用Java代码调用WebView中的js函数.也可以用WebView中的js来调用Android应用中的Java代码. 案例主要包含了: Html中调用Android方法 Android调用JS方法无参数 Android调用JS方法有参数 Android调用JS方法有参数且有

转载:[iOS] 使用UIWebView时objective-c与javascript互相调用

原文转自:http://zonble.net/archives/2010_09/1385.php 在写 JavaScript 的时候,可以使用一个叫做 window 的对象,像是我们想要从现在的网页跳到另外一个网页的时候,就会去修改 window.location.href 的位置:在我们的 Objective C 程序码中,如果我们可以取得指定的 WebView 的指标,也就可以拿到这个出现在 JavaScript 中的 window 对象,也就是 [webView windowScriptO

WebViewJavascriptBridge JS与iOS Native Code互调方法

本篇为大家介绍一个优秀的国人开发开源小项目:WebViewJavascriptBridge. 下载WebViewJavascriptBridge地址 它优雅地实现了在使用UIWebView时JS与ios 的Objective-C nativecode之间的互调,支持消息发送.接收.消息处理器的注册与调用以及设置消息处理的回调. 就像项目的名称一样,它是连接UIWebView和Javascript的bridge.在加入这个项目之后,他们之间的交互处理方式变得很友好. 在native code中跟U

JNI学习2:android 调用C语言方法与C语言调用android方法

#include <jni.h> #include <stdio.h> #include <stdlib.h> #include <jni.h> #include <android/log.h> #define LOG_TAG "System.out" //日志乱码时请将项目文件编码设置为UTF-8 /**debug级别日志:ANDROID_LOG_DEBUG:级别,LOG_TAG:标签,__VA_ARGS__:日志内容)**