iOS开发-JS与原生OC互相调用之问题总结一

2018-10-09  本文已影响0人  iOS_ZZ

近期由于工作和个人的闲置没有及时的更新博客,为此对各位同学表示抱歉,今天我们就聊聊那些在iOS中JS与原生OC互相调用,那么废话不多说直接上代码~

JS中的一些细节

stringByEvaluatingJavaScriptFromString方法注意

`function asyncAlert(content)``{    `

`     setTimeout(function(){         `

`          alert(content);         `

`     },1);`

`}`

UIWebView拦截URL总结

#pragma mark - UIWebViewDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:
(UIWebViewNavigationType)navigationType {

NSURL *URL = request.URL;
NSString *scheme = [URL scheme]; 

if ([scheme isEqualToString:@"haleyaction"]) {

        [self handleCustomAction:URL];

        returnNO;

    }

 returnYES;

}
#pragma mark - 拦截URL调OC原生的方法
- (void)handleCustomAction:(NSURL *)URL {

    NSString *host = [URL host];

    if ([host isEqualToString:@"scan"]) {

    } elseif ([host isEqualToString:@"share"]) {

        [self share:URL];

    } elseif ([host isEqualToString:@"getLocation"]) {

        [self getLocation];

    } elseif ([host isEqualToString:@"pay"]) {

        [self payAction:URL];

    } elseif ([host isEqualToString:@"shake"]) {

        [self shakeAction];

    } elseif ([host isEqualToString:@"back"]) {

        [self goBack];

    }

}
- (void)getLocation {
 // 获取位置信息

 // 将结果返回给js

 NSString *jsStr = [NSStringstringWithFormat:@"setLocation('%@')",@"广东省深圳市宝安区西乡街道XXXX号"];

    [self.webView stringByEvaluatingJavaScriptFromString:jsStr];
}
function share() {
    loadURL("haleyAction://shareClick?title=测试标题&content=测试内容&url=http://www.baidu.com");
}
- (void)share:(NSURL *)URL
{
    NSArray *params =[URL.query componentsSeparatedByString:@"&"];

    NSMutableDictionary *tempDic = [NSMutableDictionary dictionary];

    for (NSString *paramStrin params) {

        NSArray *dicArray = [paramStr componentsSeparatedByString:@"="];

        if (dicArray.count >1) {   
            NSString *decodeValue = [dicArray[1]
stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
            [tempDic setObject:decodeValue forKey:dicArray[0]];
        }
    }
    NSString *title = [tempDic objectForKey:@"title"];

    NSString *content = [tempDic objectForKey:@"content"];

    NSString *url = [tempDic objectForKey:@"url"];

 // 在这里执行分享的操作

 // 将分享结果返回给js

    NSString *jsStr = [NSString stringWithFormat:@"shareResult('%@','%@','%@')",title,content,url];

    [self.webView stringByEvaluatingJavaScriptFromString:jsStr];
}

OC调用JS方法(注意点)

上一篇 下一篇

猜你喜欢

热点阅读