美文网首页
JS同时与iOS及Android交互

JS同时与iOS及Android交互

作者: 奴良 | 来源:发表于2017-07-04 17:54 被阅读487次

这里的iOS我们只说WKWebView与js的交互

OC中WKWebView相关代码

- (void)dealloc
{
    //注意这里不能漏写
    [self.webView.configuration.userContentController removeAllUserScripts];
}

- (void)setupWebView 
{
    self.webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:self.webView];
    
    NSURL *url = [NSURL URLWithString:@"网址"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:request];
    // share 为 js与oc 保持一致的方法名
    [self.webView.configuration.userContentController addScriptMessageHandler:self name:@"share"];
}

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message
{
    if ([message.name isEqualToString:@"share"]) {
        //code
    }
}

JS代码如下

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
            </head>
    <body onload="getLocation()">
            <div>
                    <h1>Native&JavaScript</h1>
            </div>

            <div>
                    <button onclick="callShare()">share</button>
            </div>
             
        <script>
            var callShare = function() {
                    <!--这里对iOS和Android进行一个判别-->
                var ua = navigator.userAgent.toLowerCase();  
                if (/iphone|ipad|ipod/.test(ua)) {
                    <!--如需传给oc参数,如数组,则写法为 "window.webkit.messageHandlers.share.postMessage([1, 'string'])"-->
                    window.webkit.messageHandlers.share.postMessage(null)
                } else if (/android/.test(ua)) {
                    <!--ps: "android"为安卓代码中必须与js保持一致的标识符,可自行定义-->
                    window.android.share()
                }
            }
        </script>
    </body>
</html>

相关文章

网友评论

      本文标题:JS同时与iOS及Android交互

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