源代码: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>
 从JavaScript调用原生Objective-C接口:
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方法
 

最新文章

  1. a标签与click的关系
  2. Python之线程、进程和协程
  3. 做一个App前需要考虑的几件事
  4. KSM剖析——Linux 内核中的内存去耦合
  5. windows下的文件遍历(使用CFindFile)
  6. Spring面试笔记
  7. Linux查看网卡状态
  8. smarty 截取字符串,调用php中的方法,foreach循环
  9. jQuery焦点图切换特效插件封装
  10. GitHub赠送DigitalOcean优惠码100美元
  11. curl file_get_contents fsockopen
  12. node.js之setTimeout()、clearTimeout()与 setInterval()与clearInterval()
  13. Triangle LeetCode |My solution
  14. RAID知识总结[转]
  15. php扩展开发实战教程(1)
  16. GitHub如何删除一个仓库
  17. 异步请求获取JSON数据
  18. [Bayes] Understanding Bayes: A Look at the Likelihood
  19. 基于Lua语言的触动精灵脚本开发
  20. C++面向对象实现封装线程池

热门文章

  1. ubuntu查看nvidia显卡状态
  2. 快速提取邮箱地址(利用word或网站)
  3. Altium_Designer如何快速寻找元件和封装
  4. 如何把某个网站的SSL Server certificate链导入到ABAP Netweaver系统里
  5. @RequiresPermissionss是否可以填写多种权限标识,只要满足其一就可以访问?
  6. Android_ListView适配器
  7. Android Support v4,v7,v13的区别和应用场景
  8. 问题 B: C++习题 对象数组输入与输出
  9. 2018.8.17 关于JavaScript的几种常见的全局函数
  10. mysql题目(二学年)