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端请求.加载. ...
随机推荐
- MvcPager使用的Demo(同步分页)
最近接触了一下MvcPager,昂...来做个笔记吧 其实,我喜欢前后端分离,分页这种东西前端负责的地方,后端不用顾问,这里的MvcPager有点让我想起服务器控件,毕竟用到了HtmlHelper. ...
- [deviceone开发]-Star分享的几个示例
一.简介 这个是star早期分享的几个示例,都非常实用,包括弹出的菜单,模拟支付密码输入等.初学者推荐.也可以直接使用.二.效果图 三.相关下载 https://github.com/do-proje ...
- javascript 练习示例(一)
confirm 点确定返回true,点取消返回false prompt 点确定返回用户输入的字符串,点取消返回null 判断奇偶性 var isOdd = prompt('请输入你得的数字'); if ...
- node.js express安装及示例网站搭建
1.首先肯定是要安装Node.JS windows cmd依次输入如下命令: cd C:\Program Files\nodejs\ npm install -g expressnpm install ...
- arcgis api for js入门开发系列三地图工具栏(含源代码)
上一篇实现了demo的地图加载展示,在上篇实现的基础上,新增了地图工具栏以及通用地图控件功能,比如地图框选缩放.地图漫游.清空.量算工具.地图导航控件.地图比例尺控件.地图鹰眼图等等,总共分为5个部分 ...
- UIBezierPath-完善曲线
override func draw(_ rect: CGRect) { let path = UIBezierPath() // 起点 path.move(to: CGPoint(x: , y: ) ...
- 手游录屏直播技术详解 | 直播 SDK 性能优化实践
在上期<直播推流端弱网优化策略 >中,我们介绍了直播推流端是如何优化的.本期,将介绍手游直播中录屏的实现方式. 直播经过一年左右的快速发展,衍生出越来越丰富的业务形式,也覆盖越来越广的应用 ...
- Spring 4 异常处理
异常与HTTP状态码的映射(@ResponseStatus) Spring默认会将自身抛出的异常自动映射到合适的状态码,如下是一些示例: 举个例子,当后端抛出如下异常(TypeMismatchExce ...
- 容易忘记的git命令
pwd命令:显示当前的目录 git init:把当前目录变成git可以管理的仓库 git diff 文件名:查看修改了什么内容 git log:查看commit历史,包括时间.作者.版本号.commi ...
- Stream流
在Node中,存在各式各样不同的数据流,Stream(流)是一个由不同对象实现的抽象接口.例如请求HTTP服务器的request是一个 流,类似于stdout(标准输出):包括文件系统.HTTP 请求 ...