当前位置: 首页 > 编程日记 > 正文

js调用ios的方法

摘要

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

WebViewJavascriptBridge

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

用法

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

相关文章:

可以弹出确认对话框的自定义Web服务器控件ConfirmButton

作者:活靶子[原创] 出处:AspxBoy.Com 经常在论坛里看到类似这样的问题:“…如何在点击删除按钮的时候弹出个确认删除对话框”。下面我们来自己写一个这样的自定义Web服务器控件!思路如下:继承System.Web.UI.WebControls.Butt…

阿里巴巴副总裁司罗:达摩院如何搭建NLP技术体系?

出品 | AI科技大本营(ID:rgznai100)司罗把人工智能分为四个层面。在计算智能层面,近年来取得了一定成就,而在更高层面的感知、认知和创造智能上还在探索中。感知智能是指找出自然界的实体,比如找到新闻、故事中的人名、…

数字化校园passport

公共表:aspnetdb->membership,role,..... 用户表:用户名,昵称,真实姓名。tel,qq,mobile,email,用户类别 用户类别: 教师 学生 家长 贵宾 校友 网友 学年学期 班级 年级段 备课级组 处室 教师相关表: 任课…

fullPage教程 -- 整屏滚动效果插件 fullpage详解

为什么80%的码农都做不了架构师&#xff1f;>>> 本文为 H5EDU 机构官方 HTML5培训 教程&#xff0c;主要介绍&#xff1a;fullPage教程 -- 整屏滚动效果插件 fullpage详解 1、引用文件[html] view plain copy print?在CODE上查看代码片派生到我的代码片 <link …

用DataReader还是DataSet?

作者&#xff1a;Jonathan Goodyear 出处&#xff1a;网络 我经常听到有人问这个问题&#xff1a;“在ASP.NET Web应用程序中我应该用DataReader类还是DataSet类呢&#xff1f;”在很多文章以及新闻组的贴子中我经常看到这样的误解&#xff0c;即认为DataReader&#xff…

张钹院士:探索第三代人工智能,需要勇闯无人区的人才

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;【导读】7 月 3-4 日&#xff0c;由 CSDN 主办的第三届 AI 开发者大会&#xff08;AI ProCon 2020&#xff09;在线上举行。本次大会有超万人报名参与&#xff0c;参与人群覆盖 50 领域、4000 家企业。其中…

C#删除文件夹

我们知道在c#中如果一个文件夹中有内容的话&#xff0c;直接使用Directory.Delete(文件夹)&#xff1b;是删不掉的&#xff0c;那么如何进行删除&#xff1f;下面这个两个方法可以帮助你。 1、采用递归的方式&#xff0c;先删除文件夹中的文件&#xff0c;然后删除空文件夹。 p…

PHPNow升级PHP版本为5.3.5的方法

在WIN上有时候需要测试一些PHP程序&#xff0c;又不会自行独立配置环境&#xff0c;那么PHPNow是非常好的选择&#xff0c;这篇文章主要为大家分享下如果将phpnow的php版本升级为5.3.5在WIN上有时候需要测试一些PHP程序&#xff0c;又不会自行独立配置环境&#xff0c;那么PHPN…

针对《评人工智能如何走向新阶段》一文,继续发布国内外的跟贴留言427-438条如下:

427&#xff0c;SNN机理性测试 SNN利用时空处理&#xff0c;脉冲稀疏性和较高的内部神经元带宽来最大化神经形态计算的能量效率。尽管可以在这种情况下使用常规的基于硅的技术&#xff0c;但最终的神经元突触电路需要多个晶体管和复杂的布局&#xff0c;从而限制了集成密度。论…

C#程序设计语言Version2.0简介

[翻译] lover_P 2004-01-26 ------------------------------------------------------------------------------------------------------------------------------------------------------------ 本文翻译自Microsoft官方参考材料&#xff0c;提供给我们的计算机科学技术网的…

腾讯布局移动应用商店 总下载量累计达40亿次

腾讯布局移动应用商店 总下载量累计达40亿次 腾讯应用中心产品总监祝涛29日在上海表示&#xff0c;移动互联网近年来在国内快速发展&#xff0c;腾讯应用中心作为国内最大的软件商店之一&#xff0c;截至目前总下载量已超过40亿次。 祝涛在当天由腾讯应用中心举行的一个开发者/…

iOS开源JSON解析库MJExtension

iOS中JSON与NSObject互转有两种方式&#xff1a;1、iOS自带类NSJSONSerialization 2、第三方开源库SBJSON、JSONKit、MJExtension。项目中一直用MJExtension来进行JSON与Model的互转&#xff0c;非常方便、强大&#xff0c;接下来介绍一下这个轻量、强大的开源库。 1、什么是MJ…

针对《评人工智能如何走向新阶段》一文,继续发布国内外的跟贴留言439-448条如下:

439&#xff0c;彩虹一号无人机实现人类永不落地的追求 日媒&#xff1a;中国亮出杀手锏 世界各国一直在研究提高飞机的续航能力 国内研制的彩虹一号无人机采用人工智能和其他高新技术&#xff0c;飞行高度30000米&#xff0c;并终于研制成功实现人类永不落地的追求。 440&a…

Asp.Net中查询域名的Whois信息

作者&#xff1a;活靶子 出处&#xff1a;AspxBoy.Com 演示http://www.aspxboy.com/whois.aspx拷贝代码请到这里 http://www.aspxboy.com/WhoisCode.htm<% Page Language"C#" %><% Import Namespace"System.Net.Sockets" %><% Import …

Python 安装 xlsx模块

为什么80%的码农都做不了架构师&#xff1f;>>> Python 安装 xlsx模块 很多时候自动化测试时测试用例是写在excel中的如何读取转换成字典是一个比较关键的问题&#xff0c;使用pip命令安装模块如下&#xff1a;pip install openpyxl 验证使用的python代码如下&…

利用WebClient和WebRequest类获得网页源代码C#

作者&#xff1a;不详 请速与本人联系 GetPageHtml.aspx<% Page language"c#" validateRequest "false" Codebehind"GetPageHtml.aspx.cs" AutoEventWireup"false" Inherits"eMeng.Exam.GetPageHtml" %><!DO…

针对《评人工智能如何走向新阶段》一文,继续发布国内外的跟贴留言449-456条如下:

449&#xff0c;IBM发布重磅产品&#xff1a;推出新的人工智能能力。IBM研发AI向用户提供自动化的运维&#xff08;生态&#xff09;服务。 IBM新任CEO Arvind Krishna5月6日在IBM举办的“Think digital”大会上说&#xff1a;IBM致力于帮助企业&#xff08;用户&#xff09;加…

POI如何使用已有Excel作为模板二三事

关于POIPOI是Apache的一个开源项目&#xff0c;起初的目标是允许用户使用java代码来对Excel进行操作&#xff0c;发展到今天POI本身支持的范围已经逐步扩展到对Microsoft Office主要产品&#xff0c;包括&#xff1a;Excel\Word\PPT\Visio的全面支持&#xff0c;目前稳定版本为…

Graphviz样例之无向图

Graphviz是一个开源软件&#xff0c;有源码&#xff0c;支持不同平台。linux系统下使用XDot程序显示dot格式的文件。 Graphviz显示图形时&#xff0c;可以选择不同的策略进行布局和布线显示图形。 Graphviz的官方网站&#xff08;点击进入&#xff09;&#xff1a;Graphviz | G…

使用command-privilege给H3C、华为设备的用户帐号授权

一、H3C设备的权限默认分为0-3这四种级别 数值越小&#xff0c;用户的级别越低 (1)访问权限0 级 : ping、tracert、telnet 等网络诊断小程序&#xff0c;不可以dis current (2)监控权限 1级: dis current、reset、可开debug这种高级系统诊断工具&#xff0c;不能进入system视图…

针对《评人工智能如何走向新阶段》一文,继续发布国内外的跟贴留言457-465条如下:

457&#xff0c;常识推理攻关进展 人工智能要变得像人一样聪明常识推理能力是必备的 机器缺乏常识推理&#xff0c;何时到了破局的时候&#xff1f;&#xff01;这是迄今为止一直困扰人工智能50多年的难题。 OpenAI于去年发布GPT—2&#xff0c;它是一个具有15亿参数的通用语…

使用 Global.asax 文件

作者&#xff1a;未知 请速与本人联系 Global.asax 文件 除了编写 UI 代码外&#xff0c;开发人员还可以将应用程序级别的逻辑和事件处理代码添加到他们的 Web 应用程序中。此代码不处理 UI 的生成&#xff0c;并且一般不为响应个别页请求而被调用。相反&#xff0c;它负…

安装hadoop下的sqoop1.99.3及配置问题全解决

2016年8月27日&#xff0c;解决sqoop先下载的是sqoop1.99.7&#xff0c;结果配置的时候&#xff0c;出现了没有server/conf目录&#xff0c;以及启动时出现无法配置错误./bin/sqoop.sh server startyqubuntu:/opt/sqoop-1.99.7$ ./bin/sqoop.sh server startSetting conf dir: …

让Asp.NET的DataGrid可排序、可选择、可分页

‘***************************************************************‘Author: 李洪根‘MAIL: lihonggen0gci-corp.com‘专栏&#xff1a; http://www.csdn.net/develop/author/netauthor/lihonggen0/‘如需引用&#xff0c;请指明出处&#xff01; CSDN论坛VB版欢迎您&#…

asp.net mvc 3 unobtrusive client side validation not working in IE

http://stackoverflow.com/questions/5909260/jquery-1-6-form-validate-not-working-in-ie7-ie8 http://stackoverflow.com/questions/7008970/asp-net-mvc-3-unobtrusive-client-side-validation-not-working-in-ie

针对《评人工智能如何走向新阶段》一文,继续发布国内外的跟贴留言477-486条如下:

477&#xff0c;国产自动驾驶操作系统首获国际认证。 华为自动驾驶操作系统&#xff08;含虚拟化机制&#xff09;己获Safety领域最高等级功能安全认证&#xff08;ISO26262ASILD&#xff09;。 这也是我国首个获得ASILD认证的操作系统内核。 自动驾驶领域已经不再是传统汽车…

TYVJ 矩阵取数 Label:高精度+dp

题目描述 帅帅经常跟同学玩一个矩阵取数游戏&#xff1a;对于一个给定的n*m的矩阵&#xff0c;矩阵中的每个元素aij均为非负整数。游戏规则如下&#xff1a; 1.每次取数时须从每行各取走一个元素&#xff0c;共n个。m次后取完矩阵所有元素&#xff1b; 2.每次取走的各个元素只能…

一个鼠标类( Using C# and Win32API)

作者&#xff1a;网际浪子 出处&#xff1a;网络 namespace ClassLibrary.Hardware { // 原创 Using C# and Win32API ( 最近我把所有的Win32API看了1遍 很是过瘾 ) public class Mouse { internal const byte SM_MOUSEPRESENT 19; internal const byte SM_CMOUSEBU…

用Python轻松搞定Excel中的20个常用操作

来源 |早起Python&#xff08;ID: zaoqi-python&#xff09;Excel与Python都是数据分析中常用的工具&#xff0c;本文将使用动态图(Excel)代码(Python)的方式来演示这两种工具是如何实现数据的读取、生成、计算、修改、统计、抽样、查找、可视化、存储等数据处理中的常用操作&a…

vb inet 一些方法

引用:http://apps.hi.baidu.com/share/detail/14791249 使用 Internet Transfer 控件 Internet Transfer 控件实现了两种广泛使用的 Internet 协议&#xff1a; 超文本传送协议&#xff08;HyperText Transfer Protocol&#xff09;(HTTP) 和文件传送协议&#xff08;File Tran…