34.js调用
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
if ([navigationAction.request.URL.absoluteString hasPrefix:@"kiki://hjb/share"] ) {
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
for (NSString *param in [navigationAction.request.URL.query componentsSeparatedByString:@"&"]) {
NSArray *elts = [param componentsSeparatedByString:@"="];
if([elts count] < 2) continue;
[params setObject:[elts lastObject] forKey:[elts firstObject]];
}
NSString *decodedJson = [[params objectForKey:@"data"] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
self.shareInfo = [NSJSONSerialization JSONObjectWithData:[decodedJson dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];;
[self showShareAlert];
decisionHandler(WKNavigationActionPolicyCancel);
}
else{
decisionHandler(WKNavigationActionPolicyAllow);
}
}
js交互
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *url = request.URL.absoluteString;
if ([url rangeOfString:@"toyun://"].location != NSNotFound) {
// url的协议头是Toyun
NSLog(@"callCamera");
return NO;
}
return YES;
}