ios App Webページをロードし、WebリンクをクリックしてApp処理を呼び出す


一、アプリにローカルhtmlファイルの内容をロードする方法:
まずhtmlファイルを用意します.例えば、内容は次の通りです.
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta http-equiv="Content-Style-Type" content="text/css">
  <title>titletitle>
head>
<body>

<p>
    <a href=“http://www.ABC.com”>go to appa>
p>
body>
html>

次に、アプリでhtmlファイルの内容を表示するUIWebViewを定義します.
//    webview
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 20, 375/WI * WIDTH, 667/HI * HEIGHT)];
//     
webView.backgroundColor = [UIColor clearColor];

//    index.html   
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"index.html" withExtension:nil];
NSURLRequest *request = [NSURLRequest requestWithURL:fileURL];
[webView loadRequest:request];

//         
[webView setScalesPageToFit:YES];

// webview      
[self.view addSubview:webView];

上のコードはhtmlをロードする内容を実現しており、htmlのリンクをクリックし、アプリのページにジャンプする必要がある場合は、次の行の設定を加える必要があります.
webView.delegate = self;

この行を加えるとincompatible typeエラーが報告されますので、hファイルは以下のように変更され、MyViewControllerは自分のViewControllerの名前に変更された.
@interface MyViewController : UIViewController<UIWebViewDelegate>

次の関数が実装されます.
- (BOOL)webView:(UIWebView *)_webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

    if (navigationType == UIWebViewNavigationTypeLinkClicked) {//     
    //         
    NSString *url = [[request URL] absoluteString];//    
    NSRange range = [url rangeOfString:@"ABC"];//           
    if (range.location != NSNotFound) {
        //XXX APP  
        return NO;   //   NO        
    }
    }
    return YES;
}

これでリンクをクリックしてアプリ処理にジャンプする機能が完了します.ウェブページの「ABC」を含むリンクをクリックすると、上のXXXにあるAppの処理ロジックに入ります.