iOS 与js交互

2018-07-03  本文已影响7人  管饱饱

最近做了一个项目,原生中嵌套h5模块,加载h5我用的UIWebView ,h5开发反应h5定位不准确 希望原生定位然后把参数传过去,废话不多说上代码,

h5给的接受方法如下:

window.moveTo = function(lng, lat) {

                window.currentPosition = {

                    lng: lng, // 经度

                    lat: lat // 纬度

                };

            };

h5开发意思是直接通过App注入js 这个方法。

经过一番研究,其实也很简单,步骤如下:

1.引入库 JavaScriptCore

2.加入头文件#import <JavaScriptCore/JavaScriptCore.h>

3.申明

@property (strong, nonatomic) JSContext *context;

4. 在webViewDidFinishLoad 方法中实现注入 

- (void)webViewDidFinishLoad:(UIWebView*)webView{

    self.context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

    NSString *alertJS = [NSString stringWithFormat:@"moveTo(%@,%@);",@"118.88549",@"32.143186"];

 [self.context evaluateScript:alertJS];//通过oc方法调用js的alert

}

2.18.7.3

5.完成,运行之后 h5可以接受到传入的经纬度,精准定位,至此大功告成。

2018.7.4

ps: NSString *alertJS = [NSString stringWithFormat:@"moveTo('%@','%@');",@"118.88549",@"32.143186"];这种写法 传给h5的是字符串,在传string类型的数据时,加上''符号就行了(传字符串类型 true false有感)。

/*顺便谈谈之前写的js调用h5,项目是h5应用,用到地图导航的时候 希望传值给客户端后让客户端走完导航流程:*/

上一篇下一篇

猜你喜欢

热点阅读