• OVGap 原生与JS交互


    源代码: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方法
     

     

  • 相关阅读:
    .netCore+Vue 搭建的简捷开发框架 (5)
    .netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础 -2
    Vue 学习笔记
    .netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础
    .netCore+Vue 搭建的简捷开发框架 (3)-- Services层实现
    .netCore+Vue 搭建的简捷开发框架 (2)--仓储层实现和EFCore 的使用
    .netCore+Vue 搭建的简捷开发框架
    在线.net C#和vb.net 语言互转
    VB.net 通过句柄操作其他窗口
    vb.net 多线程爬虫抓取免费代理IP
  • 原文地址:https://www.cnblogs.com/huangzs/p/5197347.html
Copyright © 2020-2023  润新知