html - WKWebview加载本地html文件并深层链接进入目标页面

标签 html ios objective-c wkwebview deep-linking

我的应用程序中有一个 WKWebview 并加载本地 .html 文件。
我想使用深层链接来重定向特定页面。
我不知道该怎么做。
你们对此有什么想法吗?请告诉我解决方案?

深层链接示例:

helloAPP://index.html#/article/list/123345

代码:

@property (strong, nonatomic) IBOutlet WKWebView *webView;

- (void)viewDidLoad {

    self.webView = [self.webView initWithFrame:[UIScreen mainScreen].bounds configuration:[self createWKWebApp]];
    [self.webView setNavigationDelegate:self];
    [self.webView setUIDelegate:self];
    [self.webView.configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];
    self.webView.scrollView.bounces = NO;
    [self.webView setContentMode:UIViewContentModeScaleAspectFit];

    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"www/phoneApp"]];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:180];
    [request setHTTPMethod:@"POST"];

    [self.webView loadRequest:request];
}

最佳答案

您必须实现WKNavigationDelegate的方法decidePolicyForNavigationAction

- (void) webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
    if ([navigationAction.request.URL.scheme isEqualToString:@"helloAPP"]){
        // Open app page based on the url 
        decisionHandler(WKNavigationActionPolicyCancel);
        return;
    }
    decisionHandler(WKNavigationActionPolicyAllow);
}

关于html - WKWebview加载本地html文件并深层链接进入目标页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55739957/

相关文章:

ios - iOS 中的导航栏更改为默认颜色,而不是设置为的颜色

iphone - 我无法在 UITabBar 中重新排列 UITabBarItem

javascript - 用可重复的纹理填充图像

javascript - 获取在新窗口中打开的文本框值

css - 增加日历的大小

html - 选择下拉内联标签文本

ios - Swift:从全名字符串中拆分名字和姓氏

javascript - 带有自定义声音的推送通知未显示在 iOS 中

iphone - 这个 iOS UI 元素叫什么?如何制作一个?

c++ - 将 NSTimer 添加到 C++ 类