博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js调用ios的方法
阅读量:7186 次
发布时间:2019-06-29

本文共 2057 字,大约阅读时间需要 6 分钟。

摘要

在做h5应用的时,有时有些功能js并不能实现的特别完美。比如下载进度条或上传文件进度等。如果能调用ios或者android的方法,实现进度,以及文件上传或者下载列表更好一些。如果使用第三方的js插件。又要考虑到ios和android的版本问题,支持上并不是特别完美。

WebViewJavascriptBridge

WebViewJavascriptBridge是一个开源的ios项目,通过桥的方式obc调用js或者js调用obc方法。项目地址:。

用法

1.Import the header file and declare an ivar property:

#import "WebViewJavascriptBridge.h"....@property WebViewJavascriptBridge* bridge;

2.Instantiate WebViewJavascriptBridge with a UIWebView (iOS) or WebView (OSX):

self.bridge = [WebViewJavascriptBridge bridgeForWebView:webView];

3.Register a handler in ObjC, and call a JS handler:

[self.bridge registerHandler:@"ObjC Echo" handler:^(id data, WVJBResponseCallback responseCallback) {    NSLog(@"ObjC Echo called with: %@", data);    responseCallback(data);}];[self.bridge callHandler:@"JS Echo" responseCallback:^(id responseData) {    NSLog(@"ObjC received response: %@", responseData);}];

4.Copy and paste setupWebViewJavascriptBridge into your JS:

function setupWebViewJavascriptBridge(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)}

5.Finally, call setupWebViewJavascriptBridge and then use the bridge to register handlers and call ObjC handlers:

setupWebViewJavascriptBridge(function(bridge) {    /* Initialize your app here */    bridge.registerHandler('JS Echo', function(data, responseCallback) {        console.log("JS Echo called with:", data)        responseCallback(data)    })    bridge.callHandler('ObjC Echo', {'key':'value'}, function responseCallback(responseData) {        console.log("JS received response:", responseData)    })})

通过第4和5步骤,js就可以调用objc的方法了。

转载于:https://www.cnblogs.com/wolf-sun/p/5778852.html

你可能感兴趣的文章
个人作业——Alpha项目测试
查看>>
JQuery进度条
查看>>
ucOS找最高级任务--空间换时间
查看>>
JS 对象属性相关--检查属性、枚举属性等
查看>>
ES6笔记(7)-- Promise异步编程
查看>>
UP_GetRecordByPage
查看>>
Linux下重要日志及查看方式
查看>>
常用CDN资源平台简介
查看>>
jquery制作论坛或社交网站的每天打卡签到特效
查看>>
RT-thread内核之线程调度算法
查看>>
Vue.js学习笔记(介绍)
查看>>
L1-2. 点赞【求多组数据中出现次数最多的】
查看>>
在商城系统开发时遇到商品的多级分类,为增强扩展性,子类可以任意添加,此类问题数据库如何设计...
查看>>
PYTHON-字符编码&文件处理-练习
查看>>
iOS 实现简单的移动UIView代码实例
查看>>
LCIS 最长公共上升子序列问题DP算法及优化
查看>>
设计模式(一)单例模式
查看>>
auto,register,static实例
查看>>
log4net 开启内部调试
查看>>
Shell脚本开发过程中遇到的问题处理
查看>>