美文网首页
iOS 与js交互

iOS 与js交互

作者: 管饱饱 | 来源:发表于2018-07-03 18:39 被阅读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应用,用到地图导航的时候 希望传值给客户端后让客户端走完导航流程:*/

    相关文章

      网友评论

          本文标题:iOS 与js交互

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