ios与java交互_[Java教程]JS与IOS、安卓的交互

[Java教程]JS与IOS、安卓的交互

0

2018-09-27 17:00:49

最近做的项目中涉及到了与安卓和ios的交互问题,对于一个新手来说,多多少少会有点迷糊。在调用安卓和ios的callback回调时,很轻松的就调用成功了,而且,步骤也不那么繁琐。刚开始,只知道那样使用可以调用他们封装好的方法,来执行得到想要的效果,但是其中的原理什么的没有过多了了解。但是今天,需要用到前端封装方法传递给ios和安卓,用于调用前端在js中封装的方法。还是一如既往的按照原来的方法直接抛给人家,一个函数名,及告知他们需要传递的参数。就这样,安卓端轻而易举的调用到我封装的方法,而且没有任何问题,但是在IOS上就挂了,就是调用不到。回过头来,仔细缕了一下自己代码,没有问题,最后才发现没有使用固定的方法传递给ISO。

调用安卓的方法回调1 window.android.ZZZXK()

其中  ZZZXK()为与安卓开发人员协商好的方法名。

安卓调用前端封装的js函数的方法:直接将前端在js中封装的函数名以及需要传递的参数告知安卓开发就OK了!

****** JS调用IOS之前需要做的准备工作:

functionsetupWebViewJavascriptBridge(callback) { if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); } if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); } window.WVJBCallbacks = [callback]; var WVJBIframe = document.createElement('iframe'); WVJBIframe.style.display = 'none'; WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__'; document.documentElement.appendChild(WVJBIframe); setTimeout(function () { document.documentElement.removeChild(WVJBIframe) }, 0)}

与IOS端进行交互时,复制粘贴该段代码,到你的JS中,全局都调用!

****** JS调用IOS传递的方法:setupWebViewJavascriptBridge(function (bridge) {  bridge.callHandler('ZZZZZZZZZZZZZZZZZ', {key:value}, function responseCallback(responseData) {

//。。。

});});

/**

* ZZZZZZZZZZZ 为IOS端传递过来的函数名

* 其中第一个中括号中的键值对,为传递过来的参数

* 最后的函数为回调函数,以便于请求成功之后的函数的处理

*/

****** JS给ISO传递自己封装的函数的方法:setupWebViewJavascriptBridge(function (bridge) { bridge.registerHandler('XXXXXXX', function (data) {   var obj = JSON.parse(data); ZZZZZZZ(obj.can1, obj.can2); });

});

// XXXXXXXX:为前端JS要传递给IOS的封装的函数的名字

// function中的data参数为IOS端调用成功之后的回调,其中data为返回的结果。

// 若 XXXXXXX 函数中需要传递参数,则在data对象中获取,(依据IOS端传递的方式进行相应的处理,我这边是传递的JSON字符串类型,所以就对返回的结果:data做了数据转换处理)

// ZZZZZZZZZ():为JS本地需要执行的函数,若需要参数的情况下,可以解析obj中获取到的参数,进行赋值调用

****** 这些均为实际工作中遇到的问题,若有不足之处,可以评论指正!******

本文网址:http://www.shaoqun.com/a/418988.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

JS

0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,为了实现在Web页面中与iOS和Android原生应用程序之间的交互,可以使用JSBridge。JSBridge是一个桥接工具,可以将JavaScript与原生应用程序之间的通信连接起来。 在iOS中,可以使用JavaScriptCore框架和WKWebView来实现JSBridge。在Android中,可以使用WebView和JavaScriptInterface来实现JSBridge。 具体来说,需要在原生应用程序中创建一个JavaScriptInterface类,该类可以实现JavaScript与原生代码之间的通信。然后在Web页面中,可以通过JavaScript调用原生应用程序中的方法。 例如,在iOS中,可以使用以下代码创建一个JavaScriptInterface类: ``` @objc class JSInterface: NSObject { weak var webView: WKWebView? init(webView: WKWebView) { self.webView = webView super.init() } @objc func showToast(_ message: String) { let alertController = UIAlertController(title: "Toast", message: message, preferredStyle: .alert) let okAction = UIAlertAction(title: "OK", style: .default, handler: nil) alertController.addAction(okAction) self.webView?.viewController?.present(alertController, animated: true, completion: nil) } } ``` 然后在Web页面中,可以通过以下代码调用原生应用程序中的showToast方法: ``` window.webkit.messageHandlers.jsInterface.postMessage({action: 'showToast', message: 'Hello world!'}); ``` 在Android中,可以使用以下代码创建一个JavaScriptInterface类: ``` public class JSInterface { private Context context; public JSInterface(Context context) { this.context = context; } @JavascriptInterface public void showToast(String message) { Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); } } ``` 然后在Web页面中,可以通过以下代码调用原生应用程序中的showToast方法: ``` window.jsInterface.showToast('Hello world!'); ``` 通过这种方式,可以实现JavaScript与iOS和Android原生应用程序之间的交互

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值