OVGap iOS与Javascript交互(H5与原生APP交互)
源代码:https://github.com/windshg/OVGap
OVGap:一个轻量级的类库,能够让iOS应用和远程网页的 Javascript 代码进行通信,也就是说,远程的 Javascript 代码能够调用iOS代码。类库的工作机制是基于一种插件结构(plugin architecture)
Objective-C:
对于本机的目标代码,插件的配置很容易。你所要做的就是实现一个由ogplugin然后填充方法谁想要提供的JavaScript代码从Web视图为本地接口继承的类。这里是示例插件。
.h里:
@interface InfoPlugin : OGPlugin - (void)getDeviceInfo:(OGInvokeCommand *)command; @end .m里:
@implementation InfoPlugin - (void)getDeviceInfo:(OGInvokeCommand *)command {
NSMutableDictionary *deviceInfo = [NSMutableDictionary dictionary];
[deviceInfo setObject:[[UIDevice currentDevice] name] forKey:@"name"];
[deviceInfo setObject:[[UIDevice currentDevice] systemName] forKey:@"systemName"];
[deviceInfo setObject:[[UIDevice currentDevice] systemVersion] forKey:@"systemVersion"];
[deviceInfo setObject:[[UIDevice currentDevice] model] forKey:@"model"];
[deviceInfo setObject:[[UIDevice currentDevice] localizedModel] forKey:@"localizedModel"];
[self toCallBackSuccess:deviceInfo callBackId:command.callBackId];
} @end
添加一个插件的ogwebview:
// add plugin
InfoPlugin *infoPlugin = [[InfoPlugin alloc] init];
[self.webView addPlugin:infoPlugin];
插件配置完成。JavaScript代码示例如上。
Javascript:
JavaScript开发,你应该在你想调用当地的Objective-C代码的接口添加一个框架。导入框架:
<script src="ovgap.js" type="text/javascript" charset="utf-8"></script>
function testDeviceInfo() {
var params = {};
var success = function (callbackId, params) {
alert(params);
};
var fail = function (callbackId, params) {
alert(params);
}
window.ov_gap.invoke("getDeviceInfo", params, success, fail);
}
备注:想调用什么事件,就需要OC和Javascript两端,同时实现相同的方法。譬如:两端都实现getDeviceInfo方法
OVGap iOS与Javascript交互(H5与原生APP交互)的更多相关文章
- h5 与原生 app 交互的原理
现在移动端 web 应用,很多时候都需要与原生 app 进行交互.沟通(运行在 webview中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能.所以,这次就来捋 ...
- 客户端相关知识学习(二)之h5与原生app交互的原理
前言 现在移动端 web 应用,很多时候都需要与原生 app 进行交互.沟通(运行在 webview中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能.所以,这次 ...
- H5和原生APP之间的区别
最近项目中因各种客观因素,移动端都是默认用的纯H5 APP,感受最深的就是各种坑啊,好大的坑啊.产品上线后,带着各种坑后的总结原因方发现很多人都说纯H5 APP一次编写就能支持android和IOS两 ...
- H5、原生app、混合开发三者比较
一.概念 a) H5:即Html5,接触过互联网的都知道html,所以很明显h5是html的第5次重大修改的一项超文本标记语言的标准协议. b) 原生:使用原生制作APP(Native app),即在 ...
- h5启动原生APP总结
许久没有写博客了,最近有个H5启动APP原生页面的需求,中间遇上一些坑,看了些网上的实现方案,特意来总结下 一.需要判断客户端的平台以及是否在微信浏览器中访问 1.客户端判断 在启动APP时,Andr ...
- uni-app强大的前端框架,h5,原生app(两大系统),微信小程序
最近发现一款强大的前端框架,它叫uni-app 这是一款通用的框架可以打包app,h5,微信小程序, 说说要弄这个工具需要会那些技能吧, 要熟悉vue,微信小程序.这样这个框架用的就是很快上手了 模块 ...
- h5与app交互
现在移动端 web 应用,很多时候都需要与原生 app 进行交互.沟通(运行在 webview中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能.所以,这次就来捋 ...
- Vue与原生APP的相互交互
现在好多APP都采用了Hybrid的开发模式,这种模式特别适合那些内容变动更新较大的APP,从而使得开发和日常维护过程变得集中式.更简短.更经济高效,不需要纯原生频繁发布.但有利肯定有弊咯,性能方面能 ...
- H5内嵌原生app
前言 其实我们不管是从ios还是安卓都可以看出 原生app能内嵌H5的原因是因为有了webview这个app内嵌浏览器视图,从而使得我们可以开发html然后加载到app中(原理几乎跟pc端请求.加载. ...
随机推荐
- [deviceone开发]-do_Album的简单示例
一.简介do_Album用来打开手机系统提供的相册,能选择一张或多张图片返回给开发者,通常相册的图片比较大,要经过缩放.有的时候用户也需要把别的地方获取到到图片收藏到系统相册.这个示例简单展示这个组件 ...
- HTML中的标记-遁地龙卷风
第三版 上一版本在未经验证的情况下,盲目的认为很多东西是那样,造成错误,非常抱歉. 0.什么是标记 <input type="checkbox" checked />& ...
- ArcGIS Engine开发之属性查询
属性查询即基于空间数据的属性数据的查询,通过用户提交SQL语言中的where语句定义的查询条件,对属性数据进行搜索,从而得到查询结果的操作. 相关的类与接口 与属性查询功能相关的类主要有QureyFi ...
- python进行mp3格式判断
python进行mp3格式判断 项目中使用mp3格式进行音效播放,遇到一个mp3文件在程序中死活播不出声音,最后发现它是wav格式的文件,却以mp3结尾.要对资源进行mp3格式判断,那么如何判断呢,用 ...
- Android 防止多次点击事件
恐怕大家都会遇到这样的问题,一个点击事件多次触发,导致,同样的内容提交了多次,或者说弹出多个页面... 下面是简单的方案,大家可以试一试 原理很简单,当我们第一次点击的时候,把按钮变成不可点击状态. ...
- 初识java之String与StringBuffer(上)
好久没写博客了,一直在纠结后面的路怎么发展?好了不说废话了!!正题开始!! String与StringBuffer类是我们在开发中最常用的,我们现在一起来分析一下这两个类,首先我们先来谈谈String ...
- 使用bulkload向hbase中批量写入数据
1.数据样式 写入之前,需要整理以下数据的格式,之后将数据保存到hdfs中,本例使用的样式如下(用tab分开): row1 N row2 M row3 B row4 V row5 N row6 M r ...
- CSS3:radial-gradient,径向渐变的使用方法
语法 径向渐变不同于线性渐变,线性渐变是从“一个方向”向“另一个方向”的颜色渐变,而径向渐变是从“一个点”向四周的颜色渐变.其语法如下: background: radial-gradient(cen ...
- [转]Code! MVC 5 App with Facebook, Twitter, LinkedIn and Google OAuth2 Sign-on (C#)
本文转自:https://www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-o ...
- python学习4
1.python中的函数的参数,这个参数的设置比起C比较特殊的地方就是参数可以预保留的.这个意思就是可以保留下来不填写,然后需要的时候再传入. 这个调用之后结果如下,另外可以看出python比起C来一 ...