[英]iOS and Android webview: how to close webview and go back to App?
我正在開發一個網頁,它將由iOS和Android應用程序使用webview調用。
是否可以在網頁內進行此操作,還是由打開webview的應用程序管理? 怎么可能呢?
我讀了一些關於UIWebViewDelegate但我不確定它是否是正確的解決方案。
謝謝
在最終的網址中使用哈希,例如http://domain.com/thanks.html#closeWebview,然后觀看網址。
在Android上:
mWebview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (url.endsWith("#closeWebview")){
mWebview.setVisibility(View.GONE);
}
}
});
您可以使用UIWebViewDelegate
方法來跟蹤頁面是否已加載並執行任何操作:
-(void)webViewDidFinishLoad:(UIWebView *)webView
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
-(void)webViewDidStartLoad:(UIWebView *)webView
例如:你可以使用didFinish:
-(void)webViewDidFinishLoad:(UIWebView *)webView{
if(finalURLReached)
[self dismissViewControllerAnimated:YES completion:nil];
}
使用新的WKWebView解決方案(不推薦使用UIWebView!):
通過WKNavigationDelegate收聽導航事件
webView.navigationDelegate = myNavigationDelegate //或在您自己的WebView ViewController中實現它時使用self
收聽此委托中的某個觸發器URL
func webView(_ webView:WKWebView,decisionPolicyFor navigationAction:WKNavigationAction,decisionHandler:@escaping(WKNavigationActionPolicy) - > Void){
print(“request:(navigationAction.request.description)”)
if navigationAction.request.description.hasSuffix("/yourFinishUrlEnding") { print("url matches...") decisionHandler(.allow) closeWebview() } else { decisionHandler(.allow) } }
關閉WebView (應該適用於所有演示文稿變體)
將此添加到指定的WKNavigationDelegate:
func closeWebview() {
if(controller.presentingViewController != nil && (nil == controller.navigationController || controller.navigationController?.viewControllers.count < 2 )){
controller.dismiss(animated: true, completion: completion)
}else{
controller.navigationController?.delegate = nil;
// self.animationInteractor.forceCompleteAnimation(.Left)
let c = controller.navigationController?.viewControllers.count
let ct = c! - 2;
controller.navigationController?.popViewController(animated: true)
if controller.navigationController?.viewControllers[ct] is UITransitionViewController {
controller.navigationController?.transitioningDelegate = controller.navigationController?.viewControllers[ct] as! UITransitionViewController;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.