ios h5 上按鈕調用原生界面

主要針對WKWebview

001

 WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
    config.userContentController = [[WKUserContentController alloc] init];
    [config.userContentController addScriptMessageHandler:self name:@"Native"];
    
    [config.userContentController addScriptMessageHandler:self name:@"toTaxRefundCalculation"];   // 方法名一定要和H5開發(fā)人員協商定好  self
    [config.userContentController addScriptMessageHandler:self name:@"toPhasedCalculation"];   //切記  方法名一定要和H5開發(fā)人員協商定好  self
    [config.userContentController addScriptMessageHandler:self name:@"toNews"];   //切記 消息中心 方法名一定要和H5開發(fā)人員協商定好  self

    
    self.wkWebView = [[WKWebView alloc] initWithFrame:frame configuration:config];
    [_wkWebView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
    [_wkWebView setNavigationDelegate:self];
    [_wkWebView setUIDelegate:self];
    [_wkWebView setMultipleTouchEnabled:YES];
    [_wkWebView setAutoresizesSubviews:YES];
    [_wkWebView.scrollView setAlwaysBounceVertical:YES];
    _wkWebView.scrollView.bounces = NO;
    
    [_wkWebView addObserver:self forKeyPath:NSStringFromSelector(@selector(estimatedProgress)) options:0 context:WkWebBrowserContext];
    [self addSubview:self.wkWebView];

002 處理方法調用原生界面

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    if ([message.name isEqualToString:@"toTaxRefundCalculation"]) {//跳轉對應的原生界面
   [self toTaxRefundCalculation];
}else if ([message.name isEqualToString:@"toPhasedCalculation"]){//跳轉對應的原生頁面
    [self toPhasedCalculation];
}else if([message.name isEqualToString:@"toNews"]){//跳轉對應的原生頁面
    [self toNews];
}

}

}

003 h5端的配置需要是這樣的

window.webkit.messageHandlers.toTaxRefundCalculation.postMessage(@"toTaxRefundCalculation")
window.webkit.messageHandlers.toPhasedCalculation.postMessage(@"toPhasedCalculation")
window.webkit.messageHandlers.toNews.postMessage(@"toNews")

tip: 如果在本地測試可以調用原生,但是切換服務器不可以。此時多是服務器緩存問題,刪除clean 卸載app 重新運行就可以了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容