美文网首页
js调用ios方法

js调用ios方法

作者: andy_tu | 来源:发表于2019-06-18 11:40 被阅读0次

    实例书写不是很好看,但是例子都是验证过的,也给自己后面的时候直接拿走调用
    用例.例如,js中调用原生微信分享方法.
    1.首先在oc代码中提供微信分享的方法

    import <JavaScriptCore/JavaScriptCore.h>

    import <WebKit/WebKit.h>

    import "WXApi.h"

    • (void)viewWillAppear:(BOOL)animated
      {
      [super viewWillAppear:animated];

      WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
      configuration.preferences = [[WKPreferences alloc] init];

      configuration.preferences.minimumFontSize = 10;

      configuration.preferences.javaScriptEnabled = YES;

      configuration.preferences.javaScriptCanOpenWindowsAutomatically = YES;
      configuration.userContentController = [[WKUserContentController alloc] init];

      configuration.processPool = [[WKProcessPool alloc] init];

      self.webView= [[WKWebView alloc]initWithFrame:self.view.bounds configuration:configuration];
      self.webView.backgroundColor = [UIColor grayColor];
      self.webView.UIDelegate = self;
      self.webView.navigationDelegate =self;
      [self.view addSubview:self.webView];

    NSString* path = [[NSBundle mainBundle] pathForResource:@"test11" ofType:@"html"];
    NSURL* url = [NSURL fileURLWithPath:path];
    NSURLRequest *request =[NSURLRequest requestWithURL:url];
    [self.webView loadRequest:request];
    //注册方法 (微信分享的方法,还可以注册其他很多方法)
    [configuration.userContentController addScriptMessageHandler:self name:@"sharewithwx"];
    

    }

    代理方法

    • (void)userContentController:(WKUserContentController)userContentController didReceiveScriptMessage:(WKScriptMessage)message
      {
    NSLog(@"message.name====%@  body=%@",message.name,message.body);
    NSDictionary *obj = message.body;
    NSString *title = obj[@"title"];
    NSString *description=obj[@"description"];
    NSString *webpageUrl=obj[@"webpageUrl"];
    NSString *thumbImage=obj[@"thumbImage"];
    if([message.name isEqualToString:@"sharewithwx"])
    {
        [self sharewithwx:title :description :webpageUrl :thumbImage];
    }
    

    }

    • (void)sharewithwx:(NSString *)title :(NSString *)description :(NSString *)webpageUrl :(NSString *)thumbImage
      {
      if([WXApi isWXAppInstalled]){//判断当前设备是否安装微信客户端

        //创建多媒体消息结构体
        WXMediaMessage *message = [WXMediaMessage message];
        message.title = title;
        message.description = description;//描述
        [message setThumbImage:[UIImage imageNamed:thumbImage]];//设置预览图
        
        //创建网页数据对象
        WXWebpageObject *webObj = [WXWebpageObject object];
        webObj.webpageUrl = webpageUrl;//链接
        message.mediaObject = webObj;
        
        SendMessageToWXReq *sendReq = [[SendMessageToWXReq alloc] init];
        sendReq.bText = NO;//不使用文本信息
        sendReq.message = message;
        sendReq.scene = WXSceneSession;//分享到好友会话
        
        [WXApi sendReq:sendReq];//发送对象实例
      

      }else{

        //未安装微信应用或版本过低
      

      }
      }

    js中的调用.test11.html如下
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>

            <script>
                function onshow() {
                    window.webkit.messageHandlers.sharewithwx.postMessage({title:'【爆款直降 盛夏特惠】【29.9免邮 限量买3免1】清新持久自然GUCCMI香水',description:'我在京东发现了一个不错的商品,赶快来看看吧。',webpageUrl:'[https://open.weixin.qq.com](https://open.weixin.qq.com)',thumbImage:'res2.png'})
                }
            </script>
    </head>
    <body>
        <br>
        <br>
        <br>
        <button id="it" type="button" style="font-size: 100px"  onclick="onshow()">点我有惊喜</button>
        
        
    </body>
    

    </html>

    相关文章

      网友评论

          本文标题:js调用ios方法

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