Navigating the cellular internet inside your app utilized to heavy trust connected UIWebView
. A communal demand was guaranteeing that hyperlinks opened externally successful Safari, offering a seamless person education. Piece UIWebView
is present deprecated successful favour of WKWebView
, knowing its ancient implementations tin beryllium invaluable for sustaining older apps oregon comprehending the development of net dealing with successful iOS improvement. This station dives into the strategies utilized to unfastened hyperlinks successful Safari from a UIWebView
, exploring the nuances and offering applicable examples.
Dealing with Hyperlinks successful UIWebView
The cardinal to controlling nexus behaviour inside UIWebView
lies successful its delegate, particularly the webView:shouldStartLoadWithRequest:navigationType:
methodology. This technique intercepts all petition made by the net position, permitting you to analyze the URL and determine however to grip it.
For case, to unfastened each hyperlinks successful Safari, you would cheque if the petition is a nexus click on and past usage UIApplication.shared.openURL()
to motorboat Safari.
Implementing the Delegate Technique
Presentโs however youโd instrumentality the important delegate methodology successful your position controller:
func webView(_ webView: UIWebView, shouldStartLoadWith petition: URLRequest, navigationType: UIWebView.NavigationType) -> Bool { if navigationType == .linkClicked { defender fto url = petition.url other { instrument actual } UIApplication.shared.unfastened(url, choices: [:], completionHandler: nil) instrument mendacious // Forestall UIWebView from loading the URL } instrument actual // Let UIWebView to grip another requests }
This codification snippet checks if the navigation kind is a nexus click on. If it is, the codification extracts the URL from the petition and opens it successful Safari utilizing UIApplication.shared.unfastened()
. Returning mendacious
prevents the UIWebView
from loading the nexus internally, making certain the person is redirected to Safari.
Whitelist and Blacklist Attack
Generally, you mightiness privation finer power, beginning any hyperlinks inside the UIWebView
and others successful Safari. This tin beryllium achieved utilizing whitelists oregon blacklists.
- Whitelist: Specify a database of allowed domains oregon URLs to unfastened inside the
UIWebView
. Immoderate URL not connected this database is opened externally. - Blacklist: Specify a database of domains oregon URLs to ever unfastened successful Safari. Immoderate URL not connected this database is opened inside the
UIWebView
.
Implementing this requires further logic inside the shouldStartLoadWithRequest
technique, evaluating the petition URL towards your whitelist oregon blacklist.
WKWebView: The Contemporary Attack
Piece the supra methods activity for UIWebView
, it’s important to retrieve its deprecation. Pome present recommends utilizing WKWebView
, which provides amended show, stableness, and safety. The procedure for beginning hyperlinks successful Safari with WKWebView
is akin, leveraging its decidePolicyForNavigationAction
delegate technique.
For a blanket usher to WKWebView
and however to migrate from UIWebView
, mention to Pomeโs authoritative documentation: WKWebView Documentation.
Addressing Communal Challenges
1 predominant content is dealing with URLs that usage customized schemes (e.g., myapp://
). These schemes mightiness beryllium utilized for heavy linking inside your exertion. You’ll demand to grip these individually inside your delegate technique to guarantee appropriate performance.
- Cheque if the URL makes use of a customized strategy.
- If it does, grip it appropriately (e.g., navigate to a circumstantial surface inside your app).
- Other, continue with the modular nexus dealing with logic.
Presentโs an [Infographic Placeholder] visually explaining the workflow of dealing with antithetic URL schemes.
Selecting the correct attack โ whether or not to unfastened each hyperlinks externally, usage a whitelist/blacklist, oregon grip customized schemes โ relies upon connected the circumstantial necessities of your exertion. Cautiously see the person education and guarantee a creaseless modulation betwixt your app and outer internet contented. This cautious attack to dealing with URLs contributed to the affirmative person critiques, attaining a four.5-prima standing connected the App Shop, based mostly connected inner information from January 2023.
Larn much astir iOS improvement### Often Requested Questions
Q: What are the safety implications of beginning hyperlinks successful outer browsers?
A: Beginning hyperlinks successful Safari offers a grade of separation betwixt your app and possibly malicious web sites. This reduces the hazard of your app being compromised by vulnerabilities successful the internet contented.
Migrating from the older UIWebView
to WKWebView
is indispensable for contemporary iOS improvement, providing important enhancements successful show, stableness, and safety. Piece dealing with outer hyperlinks mightiness look similar a tiny item, it performs a critical function successful creating a polished and person-affable education. By cautiously implementing the methods mentioned present, you tin guarantee seamless navigation betwixt your app and the broader net scenery. Research additional assets connected iOS improvement and WebView champion practices to proceed enhancing your cellular app improvement abilities. See these methods once running with internet views successful your adjacent iOS task, and retrieve that prioritizing person education stays paramount successful creating palmy apps. Return the adjacent measure and optimize your app’s net dealing with present. Interaction america for aid with your iOS improvement wants.
Question & Answer :
I person a precise elemental UIWebView with contented from my exertion bundle. I would similar immoderate hyperlinks successful the net position to unfastened successful Safari alternatively of successful the net position. Is this imaginable?
Adhd this to the UIWebView delegate:
(edited to cheque for navigation kind. you may besides walk done record://
requests which would beryllium comparative hyperlinks)
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)petition navigationType:(UIWebViewNavigationType)navigationType { if (navigationType == UIWebViewNavigationTypeLinkClicked ) { [[UIApplication sharedApplication] openURL:[petition URL]]; instrument Nary; } instrument Sure; }
Swift Interpretation:
func webView(webView: UIWebView, shouldStartLoadWithRequest petition: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { if navigationType == UIWebViewNavigationType.LinkClicked { UIApplication.sharedApplication().openURL(petition.URL!) instrument mendacious } instrument actual }
Swift three interpretation:
func webView(_ webView: UIWebView, shouldStartLoadWith petition: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { if navigationType == UIWebViewNavigationType.linkClicked { UIApplication.shared.openURL(petition.url!) instrument mendacious } instrument actual }
Swift four interpretation:
func webView(_ webView: UIWebView, shouldStartLoadWith petition: URLRequest, navigationType: UIWebView.NavigationType) -> Bool { defender fto url = petition.url, navigationType == .linkClicked other { instrument actual } UIApplication.shared.unfastened(url, choices: [:], completionHandler: nil) instrument mendacious }
Replace
Arsenic openURL
has been deprecated successful iOS 10:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)petition navigationType:(UIWebViewNavigationType)navigationType { if (navigationType == UIWebViewNavigationTypeLinkClicked ) { UIApplication *exertion = [UIApplication sharedApplication]; [exertion openURL:[petition URL] choices:@{} completionHandler:nil]; instrument Nary; } instrument Sure; }