4

Ich verstehe, dass Sie ab iOS9 Cookies mit SFSafariViewController lesen können.SFSafariViewController Cookies

Wenn ich einen Cookie auf meiner Seite in JS mit dem folgenden:

var dd = new Date(Date.now() + 1000 * 60 * 60 * 24).toGMTString(); 
var expires = "expires="+ dd; 
document.cookie = "mycookie=cookievalue; " + expires + " domain=.mydomain.co.uk ; path=/ "; 

Wenn ich tun:

- (void)safariViewController:(SFSafariViewController *)controller didCompleteInitialLoad:(BOOL)didLoadSuccessfully 
{ 
    NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
    NSArray *cookiesArray = [storage cookies]; 
} 

cookiesArray immer leer ist.

Wenn ich ein traditionelles UIWebView verwenden

-(void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
    NSArray *cookiesArray = [storage cookies]; 
} 

ich das Cookie Ich erwartete.

Irgendwelche Ideen, was ich falsch machen könnte?

Antwort

5

SFSafariViewController ist im Grunde ein Safari-Prozess, der außerhalb Ihrer App ausgeführt wird. Ihre App hat keinen Zugriff auf die Cookies, die von SFSafariViewController verwendet werden, genauso wie Ihre App keinen Zugriff auf die Cookies in der Safari-App selbst hat. Wenn Sie diese Funktionalität benötigen, müssen Sie bei UIWebView oder WKWebView festhalten.

+0

Dank für das zu mir zurück bekommen, aber nach: https://developer.apple.com/reference/safariservices/sfsafariviewcontroller Der View-Controller enthält Safari Funktionen wie Reader, die automatischen Ausfüllen, Betrügerische Webseite Erkennung und Blockierung von Inhalten. Es teilt Cookies und andere Website-Daten mit Safari. Die Aktivität des Benutzers und die Interaktion mit SFSafariViewController sind für Ihre App nicht sichtbar. Sie können nicht auf AutoFill-Daten, Browserverlauf oder Website-Daten zugreifen. Sie müssen keine Daten zwischen Ihrer App und Safari sichern. –

+1

Sie missverstehen, was es bedeutet zu sagen, dass SFSafariViewController "Cookies und andere Website-Daten mit Safari teilt". SFSafariViewController ist eine Instanz von Safari. Es ist nicht Teil Ihrer App. Es greift auf die Safari-Sandbox mit Daten zu (Cookies, AutoFill usw.). Es ist nicht Ihre App, die diese Daten mit Safari teilt. Ihre App hat keinen Zugriff auf die sicheren Daten in Safari, einschließlich Cookies. Wenn Sie in Ihrer App auf Websites-Cookies zugreifen müssen, ist SFSafariViewController nicht die richtige Wahl. – wottle

+0

Sie haben meine Antwort in Ihrem Code bewiesen. NSHTTPCookieStorage ist leer, wenn Sie in einem SFSafariViewController auf die Website zugreifen. SFSafariViewController hat seinen Nutzen, aber nicht für das, was Sie versuchen zu tun. – wottle

Verwandte Themen