WKWebView在遵循WKNavigationDelegate代理后,會有一個- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;方法,監(jiān)聽特定的URL
//網(wǎng)頁交互
-(void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
NSString *lowStr = navigationAction.request.URL.absoluteString;
// NSString *urlStr = [NSString strurl]
PTTLog(@"跳轉(zhuǎn)網(wǎng)址為%@",lowStr);
if ([lowStr containsString:@"qla"]) {
[[UIApplication sharedApplication] openURL:navigationAction.request.URL];
decisionHandler(WKNavigationActionPolicyCancel);
}else{
decisionHandler(WKNavigationActionPolicyAllow);
}
}
然后在AppDelegate文件中添加-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;方法,并解析URL,來實現(xiàn)對應(yīng)功能。
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
if (!url) {
return NO;
}
NSString *urlString=[url absoluteString];
if (![urlString containsString:@"?"]) {
[_tabViewController setSelectedIndex:0];
return YES;
}
//獲取問號的位置,問號后是參數(shù)列表
NSRange range = [urlString rangeOfString:@"?"];
//獲取參數(shù)列表
NSString *propertys = [urlString substringFromIndex:(int)(range.location+1)];
//進行字符串的拆分,通過&來拆分,把每個參數(shù)分開
NSArray *subArray = [propertys componentsSeparatedByString:@"&"];
//把subArray轉(zhuǎn)換為字典
//tempDic中存放一個URL中轉(zhuǎn)換的鍵值對
NSMutableDictionary *tempDic = [NSMutableDictionary dictionaryWithCapacity:4];
for (int j = 0 ; j < subArray.count; j++)
{
//在通過=拆分鍵和值
NSArray *dicArray = [subArray[j] componentsSeparatedByString:@"="];
if ([dicArray[0] isEqualToString:@"title"]) {
//urf8轉(zhuǎn)碼
NSString *str = dicArray[1];
NSString *utf = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[tempDic setObject:utf forKey:dicArray[0]];
}else{
// PTTLog(@"再把每個參數(shù)通過=號進行拆分:n%@", dicArray);
//給字典加入元素
[tempDic setObject:dicArray[1] forKey:dicArray[0]];
}
}
UITabBarController *tabbarVC = (UITabBarController *)self.window.rootViewController;
if ([tabbarVC isKindOfClass:[QLStartADViewController class]]) {
return NO;
}
UINavigationController *navigationVC = (UINavigationController *)tabbarVC.selectedViewController;
if (((NSNumber *)[tempDic objectForKey:@"action"]).intValue == 101) {
//跳轉(zhuǎn)到首頁
[tabbarVC setSelectedIndex:0];
[navigationVC popToRootViewControllerAnimated:YES];
}else if (((NSNumber *)[tempDic objectForKey:@"action"]).intValue == 102){
//快捷入金
if (!readloginState) {
[navigationVC pushViewController:[[USStartUpController alloc]init] animated:YES];
}else{
if (readisOpenAcount) {
TransferMoneyViewController *vc = [[TransferMoneyViewController alloc]init];
[navigationVC pushViewController:vc animated:YES];
vc.activity = [tempDic objectForKey:@"activity"];
vc.tradeRoute = [tempDic objectForKey:@"tradeRoute"];
}else{
OpenAccountInfoController *openVc = [[OpenAccountInfoController alloc]init];
[navigationVC pushViewController:openVc animated:YES];
}
}
}
return YES;
}