2016-07-15 14 views
1

Gibt es eine Möglichkeit, einer App das Laden bestimmter URLs zu erlauben? Ich dachte, dass in den Einstellungen für die App-Transport-Sicherheit etwas wie Ausnahmedomänen vorhanden sind, mit dem Unterschied, dass bestimmte URLs nicht zulässig sind, sondern nur bestimmte URLs zugelassen werden und alle anderen blockiert werden, unabhängig davon, ob es sich um HTTPS/HTTP handelt. DankNur bestimmte URLs in App zulassen

+0

Wie werden diese URLs geladen? –

+0

Ich habe ein Webview innerhalb der App, die zu www.mysite.com führt, und ich möchte nie, dass der Benutzer durch das Verfolgen von Links davon stöbert. Es ist ein Sicherheitsrisiko. – KML

+1

Wenn es ein 'UIWebView' ist, glaube ich, dass Ihr Delegat am Anfang eines Seitenladevorgangs aufgerufen wird (' webView: shouldStartLoadWithRequest: navigationType: '). Sie können zurückgeben, ob die Anforderung ausgeführt werden soll. –

Antwort

3

Sie können so etwas in Ihrem AppDelegate verwenden:

optional func application(_ app: UIApplication, 
       openURL url: NSURL, 
       options options: [String : AnyObject]) -> Bool 
{ 
    //Return true or false depending on if you want 
    //this application to open the URL. 
} 

In den Kommentaren Sie erwähnen, dass Sie das alles in einem einzigen UIWebView verwenden. In diesem Fall können Sie folgendes tun:

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 
    let URL = request.URL 

    return handleRequest(URL) 
} 

@available(iOS 8.0, *) 
func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) { 
    let request = navigationAction.request; 
    let url = request.URL 

    if(handleRequest(url)) 
    { 
     decisionHandler(WKNavigationActionPolicy.Allow) 
    } 
    else 
    { 
     decisionHandler(WKNavigationActionPolicy.Cancel) 
    } 
} 

Das Stück Code behandelt sowohl UIWebView und WKWebView.

+0

Ich habe nicht angegeben, dass ich nach einer schnellen Lösung gesucht habe und als ich Ihre Antwort konvertiert habe, würde es nicht kompilieren: Das ist, was ich bekam, aber es macht keine Sinn – KML

+0

Func-Anwendung (Anwendung: UIApplication, openURL URL: NSURL, sourceApplication: String, Annotation: AnyObject) -> Bool { var params: Zeichenfolge = url.absoluteString(). substringFromIndex (url.absoluteString(). startIndex.advancedBy (url.absoluteString(). rangeOfString (": //") .location + 3)) // Gibt true oder false zurück, je nachdem, ob die Seite geladen werden soll oder nicht. return true } – KML

+0

Also gibt es keine App breite Implementierung für Swift? Ich möchte nicht, dass die App Zugriff auf andere Websites hat. – KML

Verwandte Themen