2012-09-22 4 views
10

Ich finde Vimeo iOS native App kann Cookies auf mobile Safari setzen. Wie geht es?Wie kann eine iOS App wie Vimeo Cookies auf mobile Safari setzen?

Repo Schritte:

1, Installieren Vimeo IOS native App auf einem iOS Gerät.

2, Öffnen Sie diese Vimeo iOS native App und melden Sie sich dann mit Ihrem Vimeo-Konto an.

3, Öffnen Sie mobile Safari und öffnen Sie dann die Webseite "https://vimeo.com/". Sie werden feststellen, dass Sie nicht in Vimeo angemeldet sind.

4, Öffnen Sie die native App von Vimeo iOS und klicken Sie dann auf das Symbol "Hilfe (Fragezeichen)" in der linken Navigationsleiste. Sie werden sehen, dass das Hilfe-Center von Vimeo über UIWebView geöffnet wird. Und dann können Sie diese Hilfe schließen.

5, Öffnen Sie mobile Safari und öffnen Sie dann die Webseite "https://vimeo.com/". Sie werden feststellen, dass Sie in Vimeo angemeldet sind.

Vielen Dank.

Antwort

5

Wie in this question gezeigt, können Sie einen Cookie mit der Klasse NSHTTPCookieStorage einrichten.

EDIT:
Wie Kitsune wies darauf hin, die docs sagen, dass dies nicht zwischen Anwendungen in iOS funktionieren wird, wie es in OSX tut.

Ich habe keine Zeit, dies jetzt zu testen, aber vielleicht können Sie einen Cookie mit Javascript und der stringByEvaluatingJavaScriptFromString Methode von UIWebView setzen und es wird geteilt werden? Hier ist eine Funktion, die ich im Internet gefunden, die genannt werden könnten:

function SetCookie(cookieName,cookieValue,nDays) { 
var today = new Date(); 
var expire = new Date(); 
if (nDays==null || nDays==0) nDays=1; 
expire.setTime(today.getTime() + 3600000*24*nDays); 
document.cookie = cookieName+"="+escape(cookieValue) 
       + ";expires="+expire.toGMTString(); 
} 
+5

Laut 'NSHTTPCookieStorage''s Dokumentation: _iOS Hinweis: Cookies sind nicht unter den Anwendungen in iOS._ – Kitsune

+0

Interessant, gut zu wissen! – lnafziger

+0

@Kitsune _Cookies werden nicht unter den Anwendungen in iOS geteilt._ iOS-native Apps können Cookies für mobile Safari festlegen. Aber native Apps können in Mobile Safari keine Cookies abrufen oder löschen. ** Richtig? ** – weilou

3

Es ist möglich, dass Vimeos native App eine Art von Zeichen in Token durch den Query-String auf die Hilfeseite ist vorbei, die Sie sofort umleiten könnten auf eine Seite ohne Token in der URL nach dem Setzen eines Cookies. Da das Cookie vom Webserver auf das UIWebView (Safari) gesetzt wird, wird es gefunden, wenn Sie die Safari-App verwenden.

Das ist nicht eine unterstützende API in iOS erfordern würde ...

0

Das ist offensichtlich nicht zu der Zeit der OP Frage angewandt habe, aber in jüngster Zeit wurden Cookies zwischen Safari und SFSafariViewController Instanzen in iOS geteilt 9 und 10. Vimeo könnte einen Cookie über ein unsichtbares SFSafariViewController gesetzt haben, um dieses Ergebnis zu erreichen. Allerdings hat sich dies in iOS 11 geändert. In Zukunft wird jede App (einschließlich Safari selbst) über einen vollständigen Sandbox-Datenspeicher verfügen. Offizielle Ankündigung here (um 17:28 Uhr).

In iOS 11 wird ein solches Verhalten nicht mehr möglich sein (in der Tat wurde verhindert, dass dies das Beispiel in der Ankündigung von Apple zu dieser Änderung war).

Wenn Sie eine Möglichkeit benötigen, eine garantierte Benutzerübereinstimmung von Safari an Ihre App zu übergeben, müssen Sie ein bestehendes Netzwerk von Geräteübereinstimmungen verwenden, z. B. Branch.io (vollständige Offenlegung: Ich bin im Zweigteam) . Sie können über die Techniken lesen, die Branch anstelle von Cookie-Passthrough verwendet here.

Verwandte Themen