源码

首页 » 归档 » 源码 » 一行代码搞定web调用当地代码-ios学习从入门到精通尽在姬长信

一行代码搞定web调用当地代码-ios学习从入门到精通尽在姬长信

分享最热门的ios资讯

    首先,附加上封装库的源码地址 FMBridgeJSOC源码

    先简单介绍一下这个库吧:这个库的所有要领都注册到了html的window控件上,这里有个原因不得不说一下,就是在web页面调用中,如果我们参考网络上的多数通过实现JSExport要领来注册到window.app的方式来处理,那么就会存在要领还未界说就被调用的情况。具体来讲就是网页中点击链接切换时跳转到某个网页,在加载时取获取参数,这是可能存在app的初始化都还未完成我们就开始调用了。而对于一个window窗口的生命周期这里就不讲了。

    对于 FMBridgeJSOC 这个库采用了pod支持的方式。我们只需在通过创建的用pod管理的工程中的Podfile中加入

pod 'FMBridgeJSOC'

然后执行

pod update

即可导入。

好吧,引入封装库了,接下来就介绍一下使用。

首先,界说一个controller类,在累中引入文件

UIWebView+JSBridge.h

好了接下来我们界说在累中界说一个要领吧

这里,我就用界说一个下面的要领吧:

- (NSString *(^)(BOOL isLocal)) hello:(NSString *)hello welcome:(NSString *)welcome;

看出来了吧,支持block操作哦。好了,不吹了,

下面是要领的具体实现

- (NSString *(^)(BOOL isLocal)) hello:(NSString *)hello welcome:(NSString *)welcome {

    return ^NSString *(BOOL isLocal){

        return [NSString stringWithFormat:@"%@",isLocal ? welcome : hello];

    };

}

现在我们要做什么呢?

很简单就是在viewdidLoad中界说一个webview。

我在这里采用了属性的方式界说了一个webview

- (UIWebView *)webView {    

    if (_webView == nil) {    

        _webView = [[UIWebView alloc] initWithFrame:self.view.bounds];    

        [self.view addSubview:_webView];    

    }    

    return _webView;    

}    

然后调用

[self.webView registerJSCallSelector:@selector(hello:welcome:) withTarget:self];


这样,我们在基于这个webView展示的h5页面中就可以随意调用一个以hellowelcome()为名的要领了。


[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"]]]];

这个就是我们的具体调用。

至于具体的h5调用d实现里面又个小示例,这里多说,更多参考其他资料吧。

各位看客,如果觉得可以的话可以star或fork一下以示支持哦。


用意志战胜身体的惰性!

(0)

本文由 姬長信 创作,文章地址:https://blog.isoyu.com/archives/1181.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:9 月 13, 2016 at 10:41 上午

关键词:

热评文章

发表回复

[必填]

我是人?

提交后请等待三秒以免造成未提交成功和重复