2016-05-25 3 views
3

ich eine iOS App mit 2 Webviews erstellen möchten (1 Geschäft, 1 Angemeldete Im Shop)Wie mit 2 verschiedenen NSURLSession (iOS Swift) 2 verschiedene WebViews bekommen

Wenn ich in einem Webview anmelden, die andere webview enthält die gleichen Cookies und die erste Webansicht ist ebenfalls eingeloggt.

Ich brauche die erste, die ihre eigene Sitzung hat (Cookies)!

Mein Plan ist es, einen gespeicherten Login Touch-ID geschützt zu haben und jeder kann kostenlos webview benutzen.

ich derzeit für 2 und eine halbe Stunde gesucht und versucht, Sachen wie:

let storage = NSHTTPCookieStorage.sharedHTTPCookieStorage() 
for cookie in storage.cookies as! [NSHTTPCookie]{ 
    print(cookie) 
} 
NSUserDefaults.standardUserDefaults().synchronize() 

Wenn Sie ein:

let request = NSMutableURLRequest(URL: NSURL(string: "https://www.my-url.com")!) 
    request.setValue("", forHTTPHeaderField: "Cookie") 
    webView.loadRequest(request) 

Antwort

1

Ja, Sie können Ihre Cookies zur ersten webview von webViewDidFinishLoad sparen zu dem zweiten webview zum loadRequest:

var req = NSURLRequest(URL: NSURL(string: urlString)!) 
var storage = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies as! [NSHTTPCookie] 

var reqCookies:[AnyObject] = [] 

for aCookie in storage { 

    reqCookies += [aCookie] 

} 

var headers = NSHTTPCookie.requestHeaderFieldsWithCookies(reqCookies) 

self.webView.loadRequest(req) 

Ot chts, sonst können Sie löschen:

let storage = NSHTTPCookieStorage.sharedHTTPCookieStorage() 
for cookie in storage.cookies! { 
    storage.deleteCookie(cookie) 
} 
NSUserDefaults.standardUserDefaults().synchronize() 

EDIT (nach Kommentaren): In den verschiedenen Sitzungen verwalten Sie in dieser Stackoverflow Antwort auf handle your different sessions aussehen kann.

+0

Hallo Alessandro, danke für die schnelle Antwort, aber ich habe das gegenteilige Problem. Ich habe die 2 Webviews und das Standardverhalten ist, dass die Ansichten SharedStorage haben. Mein Plan ist es, verschiedene Sitzungen zu haben, wie zum Beispiel um Browser zu haben. Das Problem ist: Ich kann die Cookies setzen, aber die Seite der Webansicht ändern wird die andere Sitzung wieder abrufen. – Tobias

+0

Dieser Teil war in Ihrer Frage nicht klar .. Wenn Sie eine andere Sitzung behandeln möchten, müssen Sie die Standard-Cookie-Richtlinien auf NSHTTPCookieAcceptPolicyNever ändern und dann die Methoden allHeaderFields und cookiesWithResponseHeaderFields: forURL: verwenden, um selbst Cookies aus dem URL-Antwortobjekt zu extrahieren. –

Verwandte Themen