适合人群:iOS开发人员。
文本内容:iOS中通过UIWebView与H5交互,实现提供原生方法给内嵌H5页面调用。
(WKWebView的交互方式写法与此不同,详见:
https://www.jianshu.com/p/261e54ea9178)
步骤:
1.自定义一个协议,协议要继承JSExport。协议中声明的方法即为需要H5调用的方法。例如:
#import <JavaScriptCore/JavaScriptCore.h>
@protocol JSIneract <JSExport>
- (void)changeOrientation:(NSInteger)param;
- (void)selectBrowse;
@end
2.嵌入H5的UIViewController(以下简称VC),实现这个JSIneract协议,并实现对应的方法。
3.VC中的UIWebView实现UIWebViewDelegate代理方法:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
//js交互,提供方法给js调用
JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
context[@“native_method”] = self;
}
备注:context[@“native_method”] = self;中“native_method”为js那边调用该方法的对象的名字,js通过对象.方法的形式调用到原生方法。总体来说,需要和H5端定好两个数据,第一,对象名native_method(任意字符串),第二,方法名。
网友评论