美文网首页
oc混合开发

oc混合开发

作者: 不务正业Darwin | 来源:发表于2017-06-29 11:28 被阅读0次

1、加载网页页面

2、

// Objective-C 语言
- (BOOL)webView:(UIWebView *)webView 
    shouldStartLoadWithRequest:(NSURLRequest *)request 
    navigationType:(UIWebViewNavigationType)navigationType {
       NSURL * url = [request URL];
       if ([[url scheme] isEqualToString:@"gap"]) {
            // 在这里做 js 调 native 的事情
            // ....
            // 做完之后用如下方法调回 js
            [webView stringByEvaluatingJavaScriptFromString:@"alert('done')"];
            return NO;
        }       
        return YES;
}

拦截url,执行js调用native,操作完成后使用stringByEvaluatingJavaScriptFromString将结果返回给js。
具体表现:
根据url拆分,执行本地oc代码
nsstring拼接js代码,使用stringByEvaluatingJavaScriptFromString方法执行js代码

3、js通知native的方法是让js发起一次特殊的网络请求,根据需要自行拼接url,使用加载一个隐藏的iframe实现。
不使用document.location方法,因为使用该方式连续两个js调用native后者会覆盖前者的请求。

4、参数传递
最简单直接的方式是将参数拼接在url后面,放到iframe的src里面,适用于简单的参数。
实现方案:
参数以JSON形式传递,进行相应的编码,除去非法字符

5、同步与异步
stringByEvaluatingJavaScriptFromString 方法通知 js,所以这是一个异步的调用。
stringByEvaluatingJavaScriptFromString本身会返回一个NSString的执行结果,这是一个同步调用。
也就是说js call native 是一个异步过程,而native call js是一个同步过程。

6、How to let the UIWebView get focuesd and show keyboard in the UIWebView?

7、主线程问题
stringByEvaluatingJavaScriptFromString方法必须在主线程里面执行,而执行时间过长就会导致主线程ui的卡顿,应该尽量让stringByEvaluatingJavaScriptFromString的执行时间短一点。

项目实现方式
1、app-plugin.js定义各种不同类型的请求操作(插件),拼接className、methodName和params,iframe发送请求。
2、webview拦截url,拆分url,通过PluginUtil解析派发给不同的类进行native操作。
3、根据native执行情况,拼接js,native call js,页面发生相应改变。

相关文章

  • oc混合开发

    1、加载网页页面 2、 拦截url,执行js调用native,操作完成后使用stringByEvaluatingJ...

  • C++ 调用 OC

    iOS 开发中,经常会用OC 与C++混合开发。本篇文章就介绍一下 OC / C++的相互调用. OC => C+...

  • Swift项目中,Swift 和OC混合开发

    链接:OC项目中,Swift 和OC混合开发 一、Swift调用OC文件 1.如果是新建OC文件,会提示是否创建桥...

  • Swift和OC混合开发

    在swift项目上的Swift和OC混合开发 1、Swift调OC方法: (1)、直接新建OC项目会自动创建桥梁文...

  • swift-struct作为数据模型

    struct的不足:1.当项目是swift和oc混合开发时,OC无法调用swift的struct,因为oc调用sw...

  • OC项目中,Swift 和OC混合开发

    链接:Swift项目中,Swift 和OC混合开发 一、Swift调用OC文件 1.如果是新建Swift文件,会提...

  • Swift 与 OC 混合开发

    ①.先把OC代码拖到 Swift 工程中添加OC代码 ②.创建桥接文件创建桥接文件 ③. 在刚刚创建的.h文件中,...

  • OC与Swift混合开发

    在OC文件中调用Swift相关方法时需设置 其中值为"项目名称-Swift.h",并在相关文件中导入#import...

  • OC和Swift混合开发

    一、需求背景 实际开发中要用到一个第三方库,第三方库是用Swift写的,而自己项目的代码是OC写的,所以需要OC和...

  • iOS-OC和Swift相互混合开发(OC&Swift混编)

    一、引言 在ios的OC和Swift混合开发无非是2种,一种是在OC的项目中使用Swift语言开发,这里就需要创建...

网友评论

      本文标题:oc混合开发

      本文链接:https://www.haomeiwen.com/subject/gidmcxtx.html